DirectX 当前参数 Windowed=false 不工作
DirectX Present Parameters Windowed=false not working
我正在尝试制作游戏。我正在使用 directx 9 这样做,但在尝试进入全屏模式时遇到了一些问题。我做了一个初始化所有当前参数的函数。一切都很好,除非我使 windowed = false (即我将全屏设置为 true)。
这是我现在的参数变量:D3DPRESENT_PARAMETERS d3dpp;
这里是 d3dpp 变量的代码。大多数(如果不是全部)代码都来自 charles kelley 的一本名为 Programming 2d Games 的书。
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 对我不起作用。请询问我是否需要更多上下文。
根据评论,您建议您使用的是 600x480。非常怀疑这是您的系统支持的分辨率,更有可能的是,您打算使用 640x480。据我所知,基本上每个 D3D9 驱动程序都支持此分辨率。
但是,对分辨率进行硬编码并不是一个稳健的解决方案,遵循 documentation for D3DPRESENT_PARAMETERS
, and use the EnumAdapterModes
函数中所述的建议获取设备的有效分辨率和显示格式列表更为实用。
我正在尝试制作游戏。我正在使用 directx 9 这样做,但在尝试进入全屏模式时遇到了一些问题。我做了一个初始化所有当前参数的函数。一切都很好,除非我使 windowed = false (即我将全屏设置为 true)。
这是我现在的参数变量:D3DPRESENT_PARAMETERS d3dpp;
这里是 d3dpp 变量的代码。大多数(如果不是全部)代码都来自 charles kelley 的一本名为 Programming 2d Games 的书。
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 对我不起作用。请询问我是否需要更多上下文。
根据评论,您建议您使用的是 600x480。非常怀疑这是您的系统支持的分辨率,更有可能的是,您打算使用 640x480。据我所知,基本上每个 D3D9 驱动程序都支持此分辨率。
但是,对分辨率进行硬编码并不是一个稳健的解决方案,遵循 documentation for D3DPRESENT_PARAMETERS
, and use the EnumAdapterModes
函数中所述的建议获取设备的有效分辨率和显示格式列表更为实用。