首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX当前参数Windowed=false不工作

DirectX当前参数Windowed=false不工作
EN

Stack Overflow用户
提问于 2017-03-22 22:50:41
回答 1查看 698关注 0票数 0

我想做个游戏。我使用directx 9这样做,我有一些问题,试图进入全屏模式。我做了一个函数,使现在的所有参数无效。一切都很好,除非我把加窗=假(我把全屏设置为真)。

下面是我现在的参数变量:D3DPRESENT_PARAMETERS d3dpp;

下面是d3dpp变量的代码。大部分(如果不是全部)代码来自查尔斯凯利( charles )的一本名为“编程2d游戏”(Programing2dGames)的书。

代码语言:javascript
复制
void Graphics::initD3Dpp()
{
try {
    ZeroMemory(&d3dpp, sizeof(d3dpp));              

    d3dpp.BackBufferWidth = width;
    d3dpp.BackBufferHeight = height;
    if (fullscreen)                                  
        d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;  
    else
        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;   
    d3dpp.BackBufferCount = 1;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.hDeviceWindow = mainhwnd;
    d3dpp.Windowed = (!fullscreen); //THIS LINE RIGHT HERE IS THE ISSUE
    d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
}
catch (...)
{
    throw(GameError(gameErrorNS::FATAL_ERROR,
        "Error initializing D3D presentation parameters"));

}

} 

我不明白为什么.windowed不适合我。如果你需要更多的上下文,请问我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 03:18:33

从评论中可以看出,您正在使用600x480。这是否是您系统上支持的解决方案,这是非常值得怀疑的,更有可能的是,您打算使用640x480。据我所知,基本上每个D3D9驱动程序都支持这个决议。

但是,硬编码分辨率并不是一个健壮的解决方案,更实际的做法是遵循文档 for D3DPRESENT_PARAMETERS中的建议,并使用EnumAdapterModes函数来获得设备的有效分辨率和显示格式的列表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42964103

复制
相关文章

相似问题

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