Browse Source

speedtree dx9

David Rose 15 years ago
parent
commit
0596c3990d

+ 1 - 1
dtool/Config.pp

@@ -958,7 +958,7 @@
 #defer SPEEDTREE_VERSION 5.1
 #defer SPEEDTREE_LIB_SUFFIX _v$[SPEEDTREE_VERSION]_VC90MT_Static$[SPEEDTREE_DEBUG].lib
 #if $[WINDOWS_PLATFORM]
-#defer SPEEDTREE_LIBS SpeedTreeCore$[SPEEDTREE_LIB_SUFFIX] SpeedTreeForest$[SPEEDTREE_LIB_SUFFIX] SpeedTreeOpenGLRenderer$[SPEEDTREE_LIB_SUFFIX] SpeedTreeRenderInterface$[SPEEDTREE_LIB_SUFFIX] $[if $[eq $[SPEEDTREE_API],OpenGL],glew32.lib]
+#defer SPEEDTREE_LIBS SpeedTreeCore$[SPEEDTREE_LIB_SUFFIX] SpeedTreeForest$[SPEEDTREE_LIB_SUFFIX] SpeedTree$[SPEEDTREE_API]Renderer$[SPEEDTREE_LIB_SUFFIX] SpeedTreeRenderInterface$[SPEEDTREE_LIB_SUFFIX] $[if $[eq $[SPEEDTREE_API],OpenGL],glew32.lib]
 #else
 #defer SPEEDTREE_LIBS
 #endif

+ 1 - 1
panda/src/speedtree/Sources.pp

@@ -9,7 +9,7 @@
 #begin lib_target
   #define TARGET pandaspeedtree
   #define LOCAL_LIBS \
-    display text pgraph gobj linmath putil
+    display text pgraph gobj linmath putil $[if $[eq $[SPEEDTREE_API],DirectX9],dxgsg9]
     
   #define COMBINED_SOURCES $[TARGET]_composite1.cxx 
 

+ 1 - 1
panda/src/speedtree/config_speedtree.cxx

@@ -20,7 +20,7 @@
 #include "loaderFileTypeRegistry.h"
 #include "dconfig.h"
 
-Configure(config_speedtree);
+ConfigureDef(config_speedtree);
 NotifyCategoryDef(speedtree, "");
 
 ConfigureFn(config_speedtree) {

+ 10 - 0
panda/src/speedtree/speedTreeNode.cxx

@@ -36,6 +36,10 @@
 #include "glew/glew.h"
 #endif  // SPEEDTREE_OPENGL
 
+#ifdef SPEEDTREE_DIRECTX9
+#include "dxGraphicsStateGuardian9.h"
+#endif
+
 bool SpeedTreeNode::_authorized;
 bool SpeedTreeNode::_done_first_init;
 TypeHandle SpeedTreeNode::_type_handle;
@@ -1076,6 +1080,12 @@ setup_for_render(GraphicsStateGuardian *gsg) {
     _done_first_init = true;
   }
 
+#ifdef SPEEDTREE_DIRECTX9
+  // In DirectX, we have to tell SpeedTree our device pointer.
+  DXGraphicsStateGuardian9 *dxgsg = DCAST(DXGraphicsStateGuardian9, gsg);
+  SpeedTree::DX9::SetDevice(dxgsg->_screen->_d3d_device);
+#endif  // SPEEDTREE_DIRECTX9
+
   if (_needs_repopulate) {
     repopulate();
 

+ 9 - 1
panda/src/speedtree/speedtree_api.h

@@ -21,7 +21,15 @@
 #include "speedtree_parameters.h"
 #include "Core/Core.h"
 #include "Forest/Forest.h"
-#include "Renderers/OpenGL/OpenGLRenderer.h"
+
+#if defined(SPEEDTREE_OPENGL)
+  #include "Renderers/OpenGL/OpenGLRenderer.h"
+#elif defined(SPEEDTREE_DIRECTX9)
+  #undef Configure
+  #include "Renderers/DirectX9/DirectX9Renderer.h"
+#else
+  #error Unexpected graphics API.
+#endif
 
 #endif  // SPEEDTREE_API_H