gpt4 book ai didi

c++ - 基本的 DirectX11 问题,只要我开始在屏幕上绘制任何东西,代码就会崩溃。还有助于 Netbeans 配置

转载 作者:行者123 更新时间:2023-11-30 00:59:57 25 4
gpt4 key购买 nike

所以,我今天开始在 DirectX11 中编程,我有很多编码经验,但不是专门的 DirectX,所以我去看了一些教程。一切都很顺利,我可以初始化一个窗口,设置背景颜色,但是当我试图定义一个着色器并绘制一个对象时,它就会在加载时崩溃。这段代码非常简单,我把它放在一个 rar 文件中,这样你就可以告诉我哪里出了问题。我正在使用 Visual C++ Express Edition 进行编码,因为我昨天尝试了数小时以在 Netbeans 中设置 OpenGL 引用路径但无济于事,所以我还没有尝试让 DirectX 在那里工作。这是我目前的代码:http://www.mediafire.com/?i8w1trkx7c03qts

我还尝试下载并运行 www.dx11.org.uk/3dcube.htm 中提供的 exe,以测试它是否是我的直接 X 或其他东西,并且那个给我一个错误“无法创建 D3D11 设备”,从他们的代码来看,这是未能完成“D3D11CreateDeviceAndSwapChain”命令。老实说,我做错了什么/发生了什么? (关于如何在 netbeans 中设置 directX 库引用的任何帮助都会很有帮助)。

最佳答案

它对我有用:)

为了编译代码,我不得不删除一些字符串的 L 前缀:“shaders.hlsl”“WindowClass”“我们的第一个 Direct3D 程序”

您的 .hlsl 文件是否与您的可执行文件位于同一路径?你也不能从 VS 启动程序。您需要从探险家。但是如果你不想要这种行为,你可以为你的着色器设置一个绝对路径,就像这样:

D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\DXTest\\shaders.hlsl", ...
D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\DXTest\\shaders.hlsl", ...

编辑:此外,在创 build 备或设备/交换链时始终使用 D3D11_CREATE_DEVICE_DEBUG在 Debug模式下。这将在 VS 输出窗口中打印有用的警告和错误(我这边一切正常)。

    D3D11CreateDeviceAndSwapChain(NULL,
D3D_DRIVER_TYPE_REFERENCE,
NULL,
#ifdef _DEBUG
D3D11_CREATE_DEVICE_DEBUG,
#else
0,
#endif
NULL,
NULL,
D3D11_SDK_VERSION,
&scd,
&swapchain,
&dev,
NULL,
&devcon);

编辑2:

同时始终在应用程序可能失败的地方检查错误代码:

ID3D10Blob* pErrorBlob = NULL;

HRESULT hr = D3DX11CompileFromFile("C:\\Users\\Stringer\\Desktop\\\\DXTest\\shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, &pErrorBlob, 0);
LPVOID pError = NULL;
if( pErrorBlob )
{
pError = pErrorBlob->GetBufferPointer();
// then cast to a char* to see it in the locals window
}

关于c++ - 基本的 DirectX11 问题,只要我开始在屏幕上绘制任何东西,代码就会崩溃。还有助于 Netbeans 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492987/

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