0

使用从这样的文件编译的着色器有效:

    D3DX11CompileFromFile(filename, NULL, NULL, "main", "vs_5_0", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, 
                   &vertexShaderBuffer, &errorMessage, NULL);

但是,如果我用这一行替换上面的行:

D3DX11CompileFromMemory(vs, strlen(vs), NULL, NULL, NULL, "main", "vs_5_0", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, 
                   &vertexShaderBuffer, &errorMessage, NULL);

Whilevs是着色器文件的 char* (如果我vs使用 打印出来std::cout,它会正确打印)。

它只是在那条线上崩溃......

我究竟做错了什么?

4

1 回答 1

2

D3DX API 已弃用,您应该使用 D3DCompile API 而不是D3DCompiler.h. D3DX11 与 D3D 替换的大部分内容相同,因此过渡很简单。

至少使用调用堆栈或输出日志编辑您的消息,因为没有更多信息,很难更具体地回答。

于 2013-09-03T20:30:07.757 回答