游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2952|回复: 4

关于初始化d3ddevice9的问题?

[复制链接]

17

主题

61

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
发表于 2005-12-10 15:27:00 | 显示全部楼层 |阅读模式
小弟用下列第的函数初始化d3ddevice9
bool CdxMg::init(HWND hWnd, int width, int height, bool fullscreen)
{
        m_pd3d = Direct3DCreate9(D3D_SDK_VERSION);
        if (m_pd3d == NULL)
        {
                MessageBox(NULL, "Unable to create D3D!", "ERROR!", MB_OK);
                return false;
        }

        D3DPRESENT_PARAMETERS d3dpp;

        ZeroMemory(&d3dpp, sizeof(d3dpp));

        d3dpp.Windowed = !fullscreen;
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;

        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
        d3dpp.BackBufferCount = 1;
        d3dpp.BackBufferWidth = width;
        d3dpp.BackBufferHeight = height;
        d3dpp.hDeviceWindow = hWnd;

        d3dpp.AutoDepthStencilFormat = D3DFMT_D24X8;
        d3dpp.EnableAutoDepthStencil = true;
        d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
        d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;

        if (FAILED(m_pd3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &m_pd3ddevice)))
        {
                MessageBox(NULL, "Unable to create D3DDevice!", "ERROR!", MB_OK);
                return false;
        }
        m_pd3ddevice->SetRenderState(D3DRS_NORMALIZENORMALS, true);

        return true;
}
结果在有些机器上面可以正常运行,在有些机器上面就告诉我Unable to create D3DDevice!很奇怪,不知道为什么,.dll文件应该都齐全的呀? Who can help me???

17

主题

61

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
 楼主| 发表于 2005-12-10 15:30:00 | 显示全部楼层

Re:关于初始化d3ddevice9的问题?

哦,对了,我的程序调用CdxMg::init时是运行于窗口界面的!
调用如下
CdxMg *m_dxmg;
m_dxmg = new CdxMg();
if(!m_dxmg->init(wndHandle, 700, 532, false))
        {
                MessageBox(NULL, "Unable to init Cdxmg!", "ERROR!", MB_OK);
                return false;
        }

4

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2005-12-10 16:25:00 | 显示全部楼层

Re:关于初始化d3ddevice9的问题?

m_pd3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &m_pd3ddevice)))

D3DCREATE_HARDWARE_VERTEXPROCESSING
这个不是每个机器都支持的,我的就不行。

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2005-12-11 23:21:00 | 显示全部楼层

Re:关于初始化d3ddevice9的问题?

D3DCREATE_HARDWARE_VERTEXPROCESSING
这个好象有的显卡不支持的,我的intel集成显卡就不行,要改用SOFTWARE.

3

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
QQ
发表于 2005-12-12 13:23:00 | 显示全部楼层

Re:关于初始化d3ddevice9的问题?

我不是做游戏开发的。只是普通的界面数据库级别的那种开发。
公司里的烂机器用 I810 主板,主板带的 I740 级别的集成显卡。

        // Create the D3D device
        HRESULT hr=gD3dObject->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
                D3DCREATE_HARDWARE_VERTEXPROCESSING, &presParams, &gD3dDevice);
        if (FAILED(hr))
        {
                // Some cards may not do hardware vertex processing so fall back to software:
                hr=gD3dObject->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,
                        D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presParams, &gD3dDevice);
                if (FAILED(hr))
                        return FALSE;
        }

这样也是会返回一个 FALSE 的。

是不是因为 I740 太烂了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 23:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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