首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Direct3D9设备所需的最少代码

创建Direct3D9设备所需的最少代码
EN

Stack Overflow用户
提问于 2011-01-23 23:11:37
回答 1查看 761关注 0票数 1

这不是为了稳定发布的代码,我只需要从我的开发PC上的硬件中获得一个在C++应用程序中创建的窗口D3D9设备来测试一些东西……它可以默认加载多个选项。

我试图从我有的一个旧的D3D8类中拼凑出来,但我得到了D3DERR_INVALIDCALL。

基本上,我现在有了这个:

代码语言:javascript
复制
    HWND mHWnd = ...;
    LPDIRECT3D9 mpD3D = Direct3DCreate9(D3D_SDK_VERSION);

    D3DPRESENT_PARAMETERS md3dpp;
    ZeroMemory( &md3dpp, sizeof(D3DPRESENT_PARAMETERS) );
    md3dpp.Windowed                 = true;
    md3dpp.SwapEffect               = D3DSWAPEFFECT_DISCARD;
    md3dpp.BackBufferCount          = 1;
    md3dpp.EnableAutoDepthStencil   = 0;
    md3dpp.hDeviceWindow            = mHWnd;
    md3dpp.BackBufferWidth          = 0;
    md3dpp.BackBufferHeight         = 0;
    md3dpp.FullScreen_RefreshRateInHz = 0;
    md3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
    md3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
    md3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
    md3dpp.MultiSampleQuality = 0;

    LPDIRECT3DDEVICE9 mpD3DDevice=0;
    HRESULT hr = mpD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,mHWnd,0,&md3dpp,&mpD3DDevice);

我认为一些D3DPRESENT_PARAMETERS选项可能是罪魁祸首-我不关心z缓冲区或模板或AA的后台缓冲区,任何旧的普通设备都可以。

我是不是复制-粘贴了一些不兼容的标志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-25 23:53:08

1问题是你需要设置一些行为标志。

来自CreateDevice.上的文档

BehaviorFlags in

DWORD

控制设备创建的one 或多个选项的组合。有关详细信息,请参阅D3DCREATE。

D3DCREATE文档中:

D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING和D3DCREATE_SOFTWARE_VERTEXPROCESSING是互斥的标志。在调用CreateDevice时,必须至少指定这些顶点处理标志中的一个

尝试:

代码语言:javascript
复制
HRESULT hr = mpD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,mHWnd,D3DCREATE_MIXED_VERTEXPROCESSING,&md3dpp,&mpD3DDevice);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4774514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档