gpt4 book ai didi

c++ - 初始化 D3D9 导致第 3 方库停止工作

转载 作者:太空狗 更新时间:2023-10-29 20:31:08 26 4
gpt4 key购买 nike

首先,一般情况...通过 DLL 加载的第 3 方库确实呈现为 HWND。它是简单的 2D 渲染,并没有以我所见的方式直接使用 D3D - 对 DLL 的依赖遍历显示了许多 D3DKMT 函数,例如 D3DKMTCreateDevice 但不是常规的 D3D 调用,例如 IDirect3D9::CreateDevice 。当我调用 IDirect3D9::CreateDevice 时,第 3 方呈现变得异常。它不会提示,只是将所有内容渲染为黑色矩形。我自己的渲染效果很好。

细节...第 3 方 DLL 是 Mozilla XULRunner 1.9.x,它是 FireFox 的核心(不是具有硬件加速功能的 2.0),包装在 wxWidgets wxWebConnect 库中。 wxWC 加载 XUL DLL 并提供网络浏览器 GUI 组件。

我有一个使用 wx 和 wxWebConnect 的工作应用程序,一个编译的 EXE 和代码: http://www.kirix.com/forums/viewtopic.php?f=25&t=911#p2605

这是我的真实代码,它稍微绑定(bind)到 wxWidgets 但还不足以让它难以阅读 - 我从随机窗口获取 HWND 只是为了初始化 D3D 但从不渲染它:

void MyFrame::OnD3DButton( wxCommandEvent &event )
{
static bool initialized = false;
static LPDIRECT3D9 mpD3D = NULL;
static LPDIRECT3DDEVICE9 mpD3DDevice=NULL;
if(!initialized)
{
wxButton *button=wxDynamicCast(event.GetEventObject(), wxButton);
HWND mHWnd = (HWND)button->GetHandle();
mpD3D = Direct3DCreate9(D3D_SDK_VERSION);

D3DPRESENT_PARAMETERS md3dpp;
ZeroMemory( &md3dpp, sizeof(D3DPRESENT_PARAMETERS) );
md3dpp.Windowed = true;
md3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
// triple buffer if VSync is on
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;

HRESULT hr = mpD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,mHWnd,
D3DCREATE_MULTITHREADED|D3DCREATE_MIXED_VERTEXPROCESSING,&md3dpp,&mpD3DDevice);
if(FAILED(hr))
wxMessageBox(wxString("mpD3D->CreateDevice() FAILED"));
else
{
wxMessageBox(wxString("mpD3D->CreateDevice() SUCCEEDED"));
initialized = true;
}
}

}

最佳答案

问题可能是 CreateDevice 将修改 FPU 状态,除非您传递标志 D3DCREATE_FPU_PRESERVE。当它咬我时,我花了很长时间才找到它。

关于c++ - 初始化 D3D9 导致第 3 方库停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4991582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com