6月4日
Gamebryo2.2 8*00系列显卡调试错误
Debug fails with 8600GT
Hi, I am getting assertions in my debug builds when using Geforce 8600GT. Everything was working fine when using 6600GT...
I can only debug using the release version now
I'm using Gamebryo 2.2.2.0 (24th Jan 2007)
Graphics driver: 6.14.11.102 (I tried 158.22 too)
DX SDK: Aug2006
The following was from Debug version of Tutorial01.
The assert message:
Assertion failed!
Program: ...
File: m:\gamebryo2.2rc_win32_src_build...\nidx9s...esc.cpp
Line: 88
Expression: eType == D3DMULTISAMPLE_NONMASKABLE || uiResult == 1
The call stack:
msvcr80d.dll!_wassert(const wchar_t * expr=0x007b14e0, const wchar_t * filename=0x007b1560, unsigned int lineno=88) Line 384 C
> Tutorial01.exe!NiDX9DeviceDesc:DisplayFormatInfo:DisplayFormatInfo() + 0x1b3 bytes
Tutorial01.exe!NiDX9DeviceDesc::NiDX9DeviceDesc() + 0x22d bytes
Tutorial01.exe!NiDX9AdapterDesc::NiDX9AdapterDesc() + 0x272 bytes
Tutorial01.exe!NiDX9SystemDesc::FillAdapterInformation() + 0xe1 bytes
Tutorial01.exe!NiDX9SystemDesc::NiDX9SystemDesc() + 0x4b bytes
Tutorial01.exe!NiDX9Renderer::GetSystemDesc() + 0xcf bytes
Tutorial01.exe!NiDX9Renderer::Initialize() + 0xda bytes
Tutorial01.exe!NiDX9Renderer::Create() + 0x113 bytes
Tutorial01.exe!Renderers::CreateRenderer() Line 35 + 0x33 bytes C++
Tutorial01.exe!NiApplication::Initialize() + 0x59 bytes
Tutorial01.exe!_WinMain@16() + 0x2e0 bytes
Tutorial01.exe!__tmainCRTStartup() Line 578 + 0x35 bytes C
Tutorial01.exe!WinMainCRTStartup() Line 403 C
kernel32.dll!7c816fd7()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
The GeForce 8*00 series exposes multisample capabilities in a different way than other graphics cards, which causes older versions of Gamebryo to hit this assertion. The bug was fixed in Gamebryo 2.3.
So are we saying that any applications built on Gamebryo 2.2 can't be debugged if using an 8000 series card? I have been getting the same error and finally found this post. We probably won't be getting Gamebryo 2.3 for another 1 or 2 months so I'd be grateful if anyone knows of a workaround for this. I'd really like to be able to debug my software, but still run the new graphics card. Any possible workarounds?
If you have a copy of Gamebryo 2.3 lying around, you could move the NiDX9SystemDesc.h, .inl, and .cpp files from 2.3 into your copy of 2.2. You'll need to change any instances of "NIASSERT" to "assert", and there may be other minor changes necessary as well, but fixing this bug was the only significant change to occur in those files between those two branches.