使用从这样的文件编译的着色器起作用:
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);
虽然vs
是着色器文件的char *(如果我使用vs
打印std::cout
,则会正确打印)。
它刚刚在那条线上崩溃......
我做错了什么?
答案 0 :(得分:2)
不推荐使用D3DX API,您应该使用来自D3DCompiler.h
的D3DCompile API。 D3DX11大致相同的东西被D3D取代,所以过渡很简单。
使用至少一个callstack或输出日志来编辑您的消息,因为没有更多信息,很难对答案更具体。