Problem with Panda3d 1.6.0 on an IBM T40

I have been running my app on Windows XP using Panda3d 1.5.4 with both Dx8 and Dx9 without problems.

Running the app with 1.6.0 results in the following:

  1. setting load-display pandadx9 in config.prc causes a runtime error about dsdx9_29.dll not found.

  2. When my skybox is enabled

    • Dx8 causes ppython to generate a fatal application fault. display(warning): FrameBufferProperties available less than requested is printed on the console.[/list]
  1. You need to install DirectX 9.
  2. That’s interesting. Is the warning all you get? Does just pviewing your model crash too? Could you make a simple case to reproduce and post it somewhere so we can take a look?

I have Directx 9 installed and it works with 1.5.4. I’ll isolate the skybox code into a simple test app and post the code shortly.

There are lots of versions of DirectX9. I’m betting that 1.5.4 was compiled against an older version of DirectX9, and 1.6.0 was compiled against a new version. In order to run successfully against this newer version, you will have to download the latest DIrectX9 runtime; try using dxwebsetup.exe from Microsoft.

David

I updated the machine to DirectX 9.0c (4.09.0000.0904) and the symptom has not changed. The code runs fine with OpenGL selected.

The skybox code that fails in 1.6.0 is:

	def LoadSkyBox(self):
		# Create the skybox.
		self.spaceSkyBox = loader.loadModel('./Monaco/skydome');
		self.spaceSkyBox.setScale(200000);
		self.spaceSkyBox.reparentTo(render);
		self.spaceSkyBox.setBin('background', 1);
		self.spaceSkyBox.setDepthWrite(0);
		self.spaceSkyBox.setTexGen( TextureStage.getDefault(), TexGenAttrib.MWorldCubeMap);

		# Load the cube map and apply the texture to the model.
		tex2 = loader.loadCubeMap('./skb6_####.png');
		self.spaceSkyBox.setTexture(tex2, 1);
		self.spaceSkyBox.setLightOff();

Does it really say “dsdx9_29.dll”, or does it say “d3dx9_29.dll”? The latter file is the name of the dll file for DirectX9 (there are lots of different version numbers of this file; you should have all of them in your c:/windows/system32 directory).

Which d3dx9_*.dll files do you have in c:/windows/system32?

David

Hi David,

The highest numbered DLLs are:
d3dx9_41 and d3d10_41

After updating DirectX to the latest version, the system complaint about the DLL has gone away.

The application crash has the following info when Dx8 is selected:

AppName: ppython.exe AppVer: 0.0.0.0 ModName: libpandadx8.dll ModVer 0.0.0.0 Offset 0003ba79

The application crash has the following info when Dx9 is selected:

AppName: ppython.exe AppVer: 0.0.0.0 ModName: d3dx9_29.dll ModVer 9.11.519.0 Offset 000d30d5

In both cases, the exception code is 0xc0000005 flags = 0

Perhaps there is a bug in cube map support, either in your driver or in Panda’s dx8 and dx9 layers? I’m pretty sure that Panda’s support for cube maps works pretty well, though, so maybe it’s a driver issue on your end. What kind of graphics card do you have? Have you tried updating your graphics drivers?

David

Does pview run at all?

pview runs fine.

I traced the code and it crashes when setTexture is called to apply the texture. The code works fine with OpenGL.

Upgrading Panda to version 1.6.1 has solved the problem. 1.6.0 must have had some incompatibility with Directx as nothing else has changed on the system.