|
DirectX8.0(7) 在未来的Windows2000服务包中改正之。 - DX6和DX7的IDirectDraw*::GetDeviceIdentifier实现中的一个bug引起运行时在结构 的尾部多写四个字节。要想带着这个错误运行,应该在DDDEVICEIDENTIFIER*结构的 尾部多分配四个额外的字节。在IDirect3D8::GetAdapterIdentifier版本中不存在这 个bug。 - Direct3D8运行时在所有WindowsNT平台上展示下列行为。运行全屏Direct3D8应用,按 Ctrl-Alt-Del键,按ESC键。桌面出现,但显示卡仍然在应用设定的分辨率上,不是适 当的桌面分辨率。(此时,用户可以用alt-tab键返回到应用界面)。下一版的DirectX 将改正这个问题。并且这个问题也将在下一版的Windows NT中得到改正。不鼓励开发者 带着这个问题工作,也不鼓励他们自己编码解决,因为这样的解决非常容易与现有问题 交互影响。 - 在Win9x DX7的APIs中不释放vertex缓冲就终止一个进程能引起不稳定。这是由DirectDraw 自动进程清扫代码的一个bug引起的,在所有Win9x平台上Windows 95,98,Millenirum, 它引起VBs的永久泄漏(直到重新引导系统)。应用应该仔细编码以保证退出进程之前所 有的vertex缓冲被正确地释放。 - 在响应WM_MOUSEMOVE消息时,应用应该仔细。如果应用用一个超出当前显示模式大小的 坐标调用IDirect3DDevice8::SetCursorPosition,则Direct3D运行时可能引起另外的 WM_MOUSEMOVE,他可能引起应用再次调用IDirect3DDevice8::SetCursorPosition,从而 导致无限循环。应用不要用不可用的坐标位置调用IDirect3DDevice8::SetCursorPosition, 也决不应该用重复的位置调用IDirect3DDevice8::SetCursorPosition。产生不可用鼠标光 标的一个一般情况是进入全屏时不正确地从一个窗口中删除菜单风格。SDK样例应用不正确 地使用SetWindowLong来在进入全屏以前从窗口中删除菜单条。正确的技术是在进入全屏以 前调用"hOldMenu = SetMenu(hWnd, NULL)'",并且然后在返回到开窗口模式前调用 "SetMenu(hWnd, hOldMenu);"。 - 在Win9x上使用函数ValidateDevice,成功时其返回值将是DD_OK。 点精灵: - 当使用Direct3D软件建立T&L管道设备(用D3DCREATE_SOFTWARE_VERTEXPROCESSING标志集或 D3DCREATE_MIXED_VERTEXPROCESSING标志并且使软件的vertex处理与之关联),可以保证支 持点精灵。当使用硬件vertex处理时,有一些老的驱动器程序可能不支持点精灵,其表现为 d3dcaps->MaxPointSize = 0。应该将他们升级到DX8驱动程序。 为了保证支持点精灵的一致行为,在表现点精灵时设置 D3DRS_CULLMODE = D3DCULL_NONE D3DRS_FILLMODE = D3DFILL_SOLID Vertex 阴影: - 两种vertex阴影指令可以产生输入以外的特殊结果,例如负数日志。光线指令的P-和Y-成分 日志等不应该传送负值。 驱动器/设备特殊问题: - Windows驱动器ATI Rage 128 失败(不做任何操作)。在使用vertex阴影输出两个纹理坐标 时,如果没有设置D3DTTFF_PROJECTED,则每一个纹理坐标都能设置。
|