gpt4 book ai didi

c++ - 无法创建 DirectX 设备和交换链

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:11 25 4
gpt4 key购买 nike

我在从 directx 检索交换链和设备时遇到问题。更多信息在代码中

void GXDX::StartUp(HWND* mainWindow,int w, int h)
{

//width and height are members of GXDX

width = w; //contains the width
height = h; //contains the height

this->mainWindow = mainWindow; // Is a handle to the main window. it is usually something
//like : unusual -735313406

ID3D10Texture2D *backBufferSurface;

DXGI_SWAP_CHAIN_DESC swapChainDesc;
swapChainDesc.BufferCount = 2;
swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
swapChainDesc.BufferDesc.Width = width;
swapChainDesc.BufferDesc.Height = height;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.OutputWindow = *mainWindow;
swapChainDesc.Windowed = TRUE;

D3D10_DRIVER_TYPE driverType = D3D10_DRIVER_TYPE_HARDWARE;

HRESULT hr = D3D10CreateDeviceAndSwapChain(NULL,driverType,NULL,0,
D3D10_SDK_VERSION, &swapChainDesc,&swapChain,&dxDevice);

if(FAILED(hr))//Error is here
throw GXVideoException(L"Problems retrieving directX device");
}

下面是方法完成后给出的所有值

-       &dxDevice   0x00e74b04  ID3D10Device * *
- 0x00000000 ID3D10Device *
- IUnknown {...} IUnknown
__vfptr CXX0030: Error: expression cannot be evaluated
- &swapChain 0x00e74b08 IDXGISwapChain * *
- 0x00000000 IDXGISwapChain *
- IDXGIDeviceSubObject {...} IDXGIDeviceSubObject
- IDXGIObject {...} IDXGIObject
- IUnknown {...} IUnknown
__vfptr CXX0030: Error: expression cannot be evaluated
- &swapChainDesc 0x002df90c {BufferDesc={...} SampleDesc={...} BufferUsage=0xcccccccc ...} DXGI_SWAP_CHAIN_DESC *
- BufferDesc {Width=0x00000320 Height=0x00000258 RefreshRate={...} ...} DXGI_MODE_DESC
Width 800 unsigned int
Height 600 unsigned int
- RefreshRate {Numerator=60 Denominator=1 } DXGI_RATIONAL
Numerator 60 unsigned int
Denominator 1 unsigned int
Format DXGI_FORMAT_R8G8B8A8_UNORM DXGI_FORMAT
ScanlineOrdering -858993460 DXGI_MODE_SCANLINE_ORDER
Scaling -858993460 DXGI_MODE_SCALING
- SampleDesc {Count=0x00000001 Quality=0x00000000 } DXGI_SAMPLE_DESC
Count 1 unsigned int
Quality 0 unsigned int
BufferUsage 3435973836 unsigned int
BufferCount 2 unsigned int
- OutputWindow 0x008b08ca {unused=-665779669 } HWND__ *
unused -665779669 int
Windowed 1 int
SwapEffect -858993460 DXGI_SWAP_EFFECT
Flags 3435973836 unsigned int
driverType D3D10_DRIVER_TYPE_HARDWARE D3D10_DRIVER_TYPE
hr 0x887a0001 HRESULT
- this 0x00e74af0 {dxDevice=0x00000000 swapChain=0x00000000 } GXDX * const
- GXRenderer {running=true width=0x00000320 height=0x00000258 ...} GXRenderer
- __vfptr 0x013277dc const GXDX::`vftable' *
[0] 0x0132110e GXDX::Render(void) *
[0x1] 0x013211d6 GXDX::StartUp(struct HWND__ * *,int,int) *
[0x2] 0x01321041 GXDX::SetupScene(void) *
[0x3] 0x01321069 GXDX::DisplayScene(void) *
running true bool
width 0x00000320 int
height 0x00000258 int
- mainWindow 0x0132a214 struct HWND__ * GXRenderManager::mainWindow {unused=0x008b08ca } HWND__ *
unused 0x008b08ca int
- dxDevice 0x00000000 ID3D10Device *
+ IUnknown {...} IUnknown
- swapChain 0x00000000 IDXGISwapChain *
- IDXGIDeviceSubObject {...} IDXGIDeviceSubObject
- IDXGIObject {...} IDXGIObject
- IUnknown {...} IUnknown
__vfptr CXX0030: Error: expression cannot be evaluated

[编辑]

在 Goz 回复之前,我检查了进一步的调试细节,这是收到的内容

DXGI Error: IDXGIFactory::CreateSwapChain: SwapEffect is unknown.

我猜我没有添加 swapeffect 属性。我会这样做并检查一下

最佳答案

傻我。早些时候我在评论中提到我正在阅读的两本书都不包含交换链效应属性。不管我是否包含交换链,我都知道出了问题。

但我也注意到这两本书都将交换链描述归零。使遗漏属性更安全。所以我添加了以下内容

SecureZeroMemory(&swapChainDesc, sizeof(swapChainDesc));

一切正常。撇开这个不谈,我还是应该添加一个交换链效果属性。但是出于原因,这本书决定不这样做,我还没有弄清楚。

关于c++ - 无法创建 DirectX 设备和交换链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3098984/

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