游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3237|回复: 7

爆强的DX问题

[复制链接]

9

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-27 02:00:00 | 显示全部楼层 |阅读模式
我的游戏用了SDK9里的d3dapp.h d3dapp.cpp等几个文件,就是用了它的框架..
(以前是DX8的,用DX8的时候没会出现任何问题,但改为DX9后,虽然能编译通过,但也问题来了)

主程序函数首先进入这个函数 创建3D对象
HRESULT CD3DApplication::Create( HINSTANCE hInstance )
{
        HRESULT hr;

        // Create the Direct3D object
        m_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
        if( m_pD3D == NULL )
                return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT );
        ........
}
第一个奇怪的问题出现了 m_pD3D == 0X000000 但是  m_pD3D != NULL 也是说
不执行return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT );
第二个问题出现了, 程序却还能运行而不出错
继续运行程序..
时候执行完这行代码
m_d3dpp.EnableAutoDepthStencil = m_d3dEnumeration.AppUsesDepthBuffer;
然后m_d3dpp.EnableAutoDepthStencil的值 = FALSE;
也就是说深度缓冲不可用..
继续执行...
程序一直不出错
进入游戏画面, 虽然设置了ZENABLE Z缓冲,但没有任何效果....也就是说m_d3dpp.EnableAutoDepthStencil=FALSE
而其它渲染(比如透明效果)是正常的..

我的电脑运行其他3D程序的时候不会出现这种情况,机器也能正常跑魔兽世界这样的3D游戏..
搞了很久都没找出原因....
.........
现在真的很急呀..
我的QQ是65320950 谢谢..


64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2008-7-27 11:22:00 | 显示全部楼层

Re:爆强的DX问题

你把断点设置在return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT );
这句上再看m_pD3D应该就不是0X00000了吧……
m_d3dpp.EnableAutoDepthStencil为falseZ缓冲没效果不是正常么……

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-7-27 11:23:00 | 显示全部楼层

Re:爆强的DX问题

你是用的release模式调试的吧

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-7-28 08:38:00 | 显示全部楼层

Re:爆强的DX问题

问题果然强暴。

0

主题

243

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
发表于 2008-7-28 11:52:00 | 显示全部楼层

Re:爆强的DX问题

rebuild

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-28 19:57:00 | 显示全部楼层

Re:爆强的DX问题

这种爆强的问题只有爆强的楼主才能遇到,嘿嘿

22

主题

191

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
QQ
发表于 2008-7-31 14:48:00 | 显示全部楼层

Re:爆强的DX问题

visual studio 观察变量的时候,有时候会有很多bug,不知道是你用的第三方库的问题还是什么其他原因;比如有时候单步一个变量,显示的是他是false,但是根据程序的运行行为(比如分支后的方向)可以判断这个值其实是true;
还有可能你的用的sdk版本的问题,你用的那两个文件是在最新的sdk里面的吗?我猜可能是9.0a和9.0c之类的差别。

9

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
 楼主| 发表于 2008-8-6 17:08:00 | 显示全部楼层

Re:爆强的DX问题

绝对不是在忽悠....
现在我的程序还存在这个问题
不直没行到解决.
现在又有问题出来了.
现在的问题是:
        D3DXHANDLE  TechHandle = g_pEffect->GetTechniqueByName("T0");
        g_pEffect->SetTechnique( TechHandle );
创建g_pEffect(初始值为NULL)的时候不会出错,就是它的值不为NULL了,
但程序一进SetTechnique就出错,说什么内存有冲突,有的大哥说new的时候把内存分配小了..
我的天啊,我都没有用new...
说一下我的程序是从DX8升级到DX9的........
编译能通过.........
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 18:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表