CG dll can't be loaded in CgPlugin
Posted: Fri Nov 02, 2012 4:10 am
Hello everyone,
I would like to test this code created by Comtois (posted in the French forum) :
But I get the "Can't initialize engine3D" error and this is the corresponding Ogre.log file :
Thanks beforehand and best regards
Guimauve
I would like to test this code created by Comtois (posted in the French forum) :
Code: Select all
IncludeFile "Screen3DRequester.pb"
Enumeration
#ThirdPersonChase
#ThirdPersonFixed
#TopView
EndEnumeration
#Nb = 100
#Size = 6
#PlayerSpeed = 0.1
Structure Vector3
x.f
y.f
z.f
EndStructure
Structure s_Key
Left.i
Right.i
EndStructure
Structure s_Item
Attached.i
Entity.i
MainNode.i
SecondNode.i
forward.i
EndStructure
Structure s_Head
Item.s_Item
LastItem.i
Key.s_Key
SightNode.i
CameraNode.i
DirectionNode.i
Offset.Vector3
EndStructure
Structure s_Camera
Camera.i
Mode.i
Tightness.f
CameraNode.i
TargetNode.i
EndStructure
Macro GetNodePosition(Position, Node)
Position\x = NodeX(Node)
Position\y = NodeY(Node)
Position\z = NodeZ(Node)
EndMacro
Macro SetVector3(V, xx, yy, zz)
V\x = xx
V\y = yy
V\z = zz
EndMacro
Macro AddVector3(V, V1, V2)
V\x = V1\x + V2\x
V\y = V1\y + V2\y
V\z = V1\z + V2\z
EndMacro
Macro SubVector3(V, V1, V2)
V\x = V1\x - V2\x
V\y = V1\y - V2\y
V\z = V1\z - V2\z
EndMacro
Macro NodeOnTerrain(p, Node)
p\x = NodeX(Node)
p\z = NodeZ(Node)
p\y = TerrainHeight(0, p\x, p\z) + #Size
NodeLocate(Node, p\x, p\y, p\z)
EndMacro
Define camera.s_Camera
Define p.Vector3
Define Head.s_Head
Global Dim Item.s_Item(#Nb)
Global NewList Chenille.i() ; Stock l'index du tableau
Global Speed.f
#CameraSpeed = 1
#TerrainMiniX = 0
#TerrainMiniY = 0
#TerrainMaxiX = 0
#TerrainMaxiY = 0
;-Declare
Declare HandleEntity(*Head.s_Head)
Declare CameraMode(*Camera.s_Camera, *Head.s_Head)
Declare CameraTrack(*Camera.s_Camera, *Head.s_Head)
Declare CameraInstantUpdate(*Camera.s_Camera, *CameraPosition.Vector3, *TargetPosition.Vector3)
Declare CameraUpdate(*Camera.s_Camera, *CameraPosition.Vector3, *TargetPosition.Vector3)
Declare.f Distance(*v1.Vector3, *v2.Vector3)
Declare MoveItem()
Declare TestItem(*Head.s_Head)
Declare InitBlendMaps()
Declare Clamp(*var.float, min.f, max.f)
; OpenGL needs to have CG enabled to work (Linux and OS X have OpenGL by default)
;
; CompilerIf #PB_Compiler_OS <> #PB_OS_Windows Or Subsystem("OpenGL")
; Flags = #PB_Engine3D_EnableCG
; CompilerEndIf
If InitEngine3D(#PB_Engine3D_DebugLog|#PB_Engine3D_EnableCG)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
Add3DArchive("Data/Textures/", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Scripts",#PB_3DArchive_FileSystem)
Add3DArchive("Data/Textures/nvidia", #PB_3DArchive_FileSystem)
Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
WorldShadows(#PB_Shadow_Modulative, -1, RGB(127, 127, 127))
;- Light
;
light = CreateLight(#PB_Any ,RGB(185, 185, 185), 4000, 1200, 1000, #PB_Light_Directional)
LightColor(light, RGB(255*0.4, 255*0.4,255*0.4), #PB_Light_SpecularColor)
LightDirection(light ,0.55, -0.3, -0.75)
AmbientColor(RGB(5, 5,5))
;----------------------------------
; terrain definition
SetupTerrains(LightID(Light), 3000, #PB_Terrain_NormalMapping)
; initialize terrain
CreateTerrain(0, 513, 12000, 600, 3, "Terrain04", "Dat")
; set all texture will be use when terrrain will be constructed
AddTerrainTexture(0, 0, 100, "dirt_grayrocky_diffusespecular.dds", "dirt_grayrocky_normalheight.dds")
AddTerrainTexture(0, 1, 30, "grass_green-01_diffusespecular.dds", "grass_green-01_normalheight.dds")
AddTerrainTexture(0, 2, 200, "growth_weirdfungus-03_diffusespecular.dds", "growth_weirdfungus-03_normalheight.dds")
;- define terrains
For ty = #TerrainMiniY To #TerrainMaxiY
For tx = #TerrainMiniX To #TerrainMaxiX
imported = DefineTerrainTile(0, tx, ty, "terrain513.png", ty % 2, tx % 2)
Next
Next
BuildTerrain(0)
If imported = #True
InitBlendMaps()
UpdateTerrain(0)
SaveTerrain(0, #False)
EndIf
; SkyBox
;
SkyBox("desert07.jpg")
;- Materials
;
CreateMaterial(0, LoadTexture(0, "Wood.jpg"))
GetScriptMaterial(1, "SphereMap/SphereMappedRustySteel")
CreateMaterial(2, LoadTexture(2, "Dirt.jpg"))
GetScriptMaterial(3, "Scene/GroundBlend")
;- Head
;
CreateSphere(1, #Size)
With Head
\Item\Entity = CreateEntity(#PB_Any, MeshID(1), MaterialID(1))
\Key\Left = #PB_Key_Left
\Key\Right = #PB_Key_Right
\Offset\x = 0
\Offset\y = 50 ; Offset could be needed for FirstPerson
\Offset\z = 130
; Entity use 5 nodes
\Item\MainNode=CreateNode(#PB_Any, 0, #Size, 0) ; Entity position
\Item\SecondNode=CreateNode(#PB_Any, 0, 0, 2 * #Size)
\DirectionNode=CreateNode(#PB_Any, 0, 0, -1) ; Direction normalized
\SightNode=CreateNode(#PB_Any, 0, 20, -120) ; For cameraLookAt
\CameraNode=CreateNode(#PB_Any, 0, 100, 140) ; Camera position
CopyStructure(Head\Item, Item(0), s_Item)
\LastItem = 0
AttachNodeObject(\Item\MainNode, NodeID(\SightNode))
AttachNodeObject(\Item\MainNode, NodeID(\CameraNode))
AttachNodeObject(\Item\MainNode, NodeID(\DirectionNode))
AttachNodeObject(\Item\MainNode, NodeID(\Item\SecondNode))
AttachNodeObject(\Item\MainNode, EntityID(\Item\Entity))
NodeOnTerrain(p, \Item\MainNode)
EndWith
;- Item
;
For i=1 To #Nb
With Item(i)
\Entity = CreateEntity(#PB_Any, MeshID(1), MaterialID(1))
; Entity use 2 nodes
\MainNode=CreateNode(#PB_Any, Random(6000)-3000, #Size, Random(6000)-3000) ; Entity position
\SecondNode=CreateNode(#PB_Any, 0, 0, 2 * #Size) ; Direction normalized
AttachNodeObject(\MainNode, NodeID(\SecondNode))
AttachNodeObject(\MainNode, EntityID(\Entity))
NodeOnTerrain(p, \MainNode)
EndWith
Next
;- Camera
;
CreateCamera(0, 0, 0, 100, 100)
With Camera
\Camera = 0
\Mode = -1
\Tightness = 0.01
; Camera use 2 nodes
\CameraNode = CreateNode(#PB_Any, -3000, 700, 0) ; Camera position
\TargetNode = CreateNode(#PB_Any) ; For cameraLookAt
AttachNodeObject(\CameraNode, CameraID(\Camera))
EndWith
Repeat
Screen3DEvents()
If ExamineKeyboard()
CameraMode(@Camera, @Head)
HandleEntity(@Head)
EndIf
TestItem(@Head)
MoveItem()
CameraTrack(@Camera, @Head)
Speed.f = RenderWorld() * #PlayerSpeed
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
End
EndIf
Else
MessageRequester("Error","Can't initialize engine3D")
EndIf
Procedure InitBlendMaps()
minHeight1.f = 70
fadeDist1.f = 40
minHeight2.f = 70
fadeDist2.f = 15
For ty = #TerrainMiniY To #TerrainMaxiY
For tx = #TerrainMiniX To #TerrainMaxiX
Size = TerrainTileLayerMapSize(0, tx, ty)
For y = 0 To Size-1
For x = 0 To Size-1
Height.f = TerrainTileHeightAtPosition(0, tx, ty, 1, x, y)
val.f = (Height - minHeight1) / fadeDist1
Clamp(@val, 0, 1)
SetTerrainTileLayerBlend(0, tx, ty, 1, x, y, val)
val.f = (Height - minHeight2) / fadeDist2
Clamp(@val, 0, 1)
SetTerrainTileLayerBlend(0, tx, ty, 2, x, y, val)
Next
Next
UpdateTerrainTileLayerBlend(0, tx, ty, 1)
UpdateTerrainTileLayerBlend(0, tx, ty, 2)
Next
Next
EndProcedure
Procedure Clamp(*var.float, min.f, max.f)
If *var\f < min
*var\f = min
ElseIf *var\f > max
*var\f = max
EndIf
EndProcedure
Procedure.f Distance(*v1.Vector3, *v2.Vector3)
ProcedureReturn Sqr((*v1\x-*v2\x)*(*v1\x-*v2\x)+(*v1\y-*v2\y)*(*v1\y-*v2\y)+(*v1\z-*v2\z)*(*v1\z-*v2\z))
EndProcedure
Procedure MoveItem()
Protected.Vector3 d, p, v1, v2
Protected Dist.f
ForEach Chenille()
item = Chenille()
forward = Item(item)\forward
GetNodePosition(v1, Item(item)\MainNode)
GetNodePosition(d, Item(forward)\MainNode)
Dist = (1.8 * #Size) - Distance(@v1, @d)
NodeLookAt(Item(item)\MainNode, d\x, d\y, d\z)
MoveNode(Item(item)\MainNode, 0, 0, Dist, #PB_Local)
NodeOnTerrain(p, Item(item)\MainNode)
Next
EndProcedure
Procedure TestItem(*Head.s_Head)
Protected.Vector3 v1, v2, d, p
For i = 1 To #Nb
If Not Item(i)\Attached
GetNodePosition(v1, *Head\Item\MainNode)
GetNodePosition(v2, Item(i)\MainNode)
If Distance(@v1, @v2) < 2 * #Size
AddElement(Chenille())
Chenille() = i
Item(i)\forward = *Head\LastItem
GetNodePosition(p, Item(*Head\LastItem)\SecondNode)
GetNodePosition(d, Item(*Head\LastItem)\MainNode)
NodeLocate(Item(i)\MainNode, p\x, p\y, p\z)
NodeLookAt(Item(i)\MainNode, d\x, d\y, d\z)
*Head\LastItem = i
Item(i)\Attached = #True
EndIf
EndIf
Next
EndProcedure
Procedure HandleEntity( *Head.s_Head)
Protected.Vector3 PosMain, PosDir , p
Protected Node
With *Head
MoveNode(\Item\MainNode, 0, 0, -Speed, #PB_Local)
NodeOnTerrain(p, \Item\MainNode)
If KeyboardPushed(\Key\Left)
RotateNode(\Item\MainNode, 0,Speed, 0, #PB_Relative)
ElseIf KeyboardPushed(\Key\Right)
RotateNode(\Item\MainNode, 0, -Speed, 0, #PB_Relative)
EndIf
EndWith
EndProcedure
Procedure CameraMode(*Camera.s_Camera, *Head.s_Head)
Protected.Vector3 CameraPosition, TargetPosition, Temp
If KeyboardReleased(#PB_Key_F2) Or *Camera\Mode = -1
*Camera\Mode = #ThirdPersonChase
HideEntity(*Head\Item\Entity, #False)
GetNodePosition(CameraPosition, *Head\CameraNode)
GetNodePosition(TargetPosition, *Head\SightNode)
CameraInstantUpdate(*Camera, @CameraPosition, @TargetPosition)
*Camera\Tightness = 0.01
ElseIf KeyboardReleased(#PB_Key_F3)
*Camera\Mode = #ThirdPersonFixed
HideEntity(*Head\Item\Entity, #False)
SetVector3(CameraPosition, 0, TerrainHeight(0, 0, 0) + 200, 0)
GetNodePosition(TargetPosition, *Head\SightNode)
CameraInstantUpdate(*Camera, @CameraPosition, @TargetPosition)
*Camera\Tightness = 0.01
ElseIf KeyboardReleased(#PB_Key_F4)
*Camera\Mode = #TopView
HideEntity(*Head\Item\Entity, #True)
GetNodePosition(CameraPosition, Item(*Head\LastItem)\MainNode)
CameraPosition\y + 200
GetNodePosition(TargetPosition, *Head\SightNode)
CameraInstantUpdate(*Camera, @CameraPosition, @TargetPosition)
*Camera\Tightness = 1
EndIf
EndProcedure
Procedure CameraTrack(*Camera.s_Camera, *Head.s_Head)
Protected.Vector3 CameraPosition, TargetPosition, Temp
Select *Camera\Mode
Case #ThirdPersonChase
GetNodePosition(CameraPosition, *Head\CameraNode)
GetNodePosition(TargetPosition, *Head\SightNode)
CameraUpDate(*Camera, @CameraPosition, @TargetPosition)
Case #ThirdPersonFixed
SetVector3(CameraPosition, 0, TerrainHeight(0, 0, 0) + 200, 0)
GetNodePosition(TargetPosition, *Head\SightNode)
CameraUpDate(*Camera, @CameraPosition, @TargetPosition)
Case #TopView
GetNodePosition(CameraPosition, Item(*Head\LastItem)\MainNode)
CameraPosition\y + 200
GetNodePosition(TargetPosition, *Head\Item\MainNode)
CameraUpDate(*Camera, @CameraPosition, @TargetPosition)
EndSelect
EndProcedure
Procedure CameraInstantUpdate(*Camera.s_Camera, *CameraPosition.Vector3, *TargetPosition.Vector3)
Protected V1.Vector3, V2.Vector3
NodeLocate(*Camera\CameraNode, *CameraPosition\x, *CameraPosition\y, *CameraPosition\z)
NodeLocate(*Camera\TargetNode, *TargetPosition\x, *TargetPosition\y, *TargetPosition\z)
CameraLookAt(*Camera\Camera, NodeX(*Camera\TargetNode), NodeY(*Camera\TargetNode), NodeZ(*Camera\TargetNode))
EndProcedure
Procedure CameraUpdate(*Camera.s_Camera, *CameraPosition.Vector3, *TargetPosition.Vector3)
Protected V1.Vector3, V2.Vector3
V1\x = (*CameraPosition\x - NodeX(*Camera\CameraNode)) * *Camera\Tightness
V1\y = (*CameraPosition\y - NodeY(*Camera\CameraNode)) * *Camera\Tightness
v1\z = (*CameraPosition\z - NodeZ(*Camera\CameraNode)) * *Camera\Tightness
MoveNode(*Camera\CameraNode, V1\x, V1\y, V1\z)
V2\x = (*TargetPosition\x - NodeX(*Camera\TargetNode)) * *Camera\Tightness
V2\y = (*TargetPosition\y - NodeY(*Camera\TargetNode)) * *Camera\Tightness
V2\z = (*TargetPosition\z - NodeZ(*Camera\TargetNode)) * *Camera\Tightness
MoveNode(*Camera\TargetNode, V2\x, V2\y, V2\z)
CameraLookAt(*Camera\Camera, NodeX(*Camera\TargetNode), NodeY(*Camera\TargetNode), NodeZ(*Camera\TargetNode))
EndProcedureOf course "CG dll can't be loaded in CgPlugin", I'm compiling this code on LinuxMint13 x64. So what this mean ? Some needed libs are missing ? It is a bug on Linux Platform ?22:58:23: Creating resource group General
22:58:23: Creating resource group Internal
22:58:23: Creating resource group Autodetect
22:58:23: SceneManagerFactory for type 'DefaultSceneManager' registered.
22:58:23: Registering ResourceManager for type Material
22:58:23: Registering ResourceManager for type Mesh
22:58:23: Registering ResourceManager for type Skeleton
22:58:23: MovableObjectFactory for type 'ParticleSystem' registered.
22:58:23: OverlayElementFactory for type Panel registered.
22:58:23: OverlayElementFactory for type BorderPanel registered.
22:58:23: OverlayElementFactory for type TextArea registered.
22:58:23: Registering ResourceManager for type Font
22:58:23: ArchiveFactory for archive type FileSystem registered.
22:58:23: ArchiveFactory for archive type Zip registered.
22:58:23: ArchiveFactory for archive type EmbeddedZip registered.
22:58:23: DDS codec registering
22:58:23: FreeImage version: 3.10.0
22:58:23: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
22:58:23: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,koa,iff,lbm,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,dds,gif,g3,sgi,j2k,j2c,jp2
22:58:23: PVRTC codec registering
22:58:23: Registering ResourceManager for type HighLevelGpuProgram
22:58:23: Registering ResourceManager for type Compositor
22:58:23: MovableObjectFactory for type 'Entity' registered.
22:58:23: MovableObjectFactory for type 'Light' registered.
22:58:23: MovableObjectFactory for type 'BillboardSet' registered.
22:58:23: MovableObjectFactory for type 'ManualObject' registered.
22:58:23: MovableObjectFactory for type 'BillboardChain' registered.
22:58:23: MovableObjectFactory for type 'RibbonTrail' registered.
22:58:23: *-*-* OGRE Initialising
22:58:23: *-*-* Version 1.8.0 (Byatis)
22:58:23: OGRE EXCEPTION(7:InternalErrorException): CG dll can't be loaded in CgPlugin::install at OgreCgPlugin.cpp (line 196)
22:58:23: *-*-* OGRE Shutdown
22:58:23: Unregistering ResourceManager for type Compositor
22:58:23: Unregistering ResourceManager for type Font
22:58:23: Unregistering ResourceManager for type Skeleton
22:58:23: Unregistering ResourceManager for type Mesh
22:58:23: Unregistering ResourceManager for type HighLevelGpuProgram
22:58:23: Unregistering ResourceManager for type Material
Thanks beforehand and best regards
Guimauve