我一直在使用 D3DX11CompileFromFile 函数从 blob 指针编译和创建 ID3D11VertexShader * 和 ID3D11PixelShader * ,如下所示:
ID3D10Blob * vertexShaderBuffer;
ID3D10Blob * errorMessage;
if(FAILED(D3DX11CompileFromFile(vsFilename.c_str(), NULL, NULL, "LightVertexShader", "vs_5_0", D3D10_SHADER_ENABLE_STRICTNESS, 0, NULL, &vertexShaderBuffer, &errorMessage, NULL)))
return false;
if(FAILED(device->CreateVertexShader(vertexShaderBuffer->GetBufferPointer(), vertexShaderBuffer->GetBufferSize(), NULL, &m_vertexShader)))
return false;
其中 vsFilename 是一个有效的 std::string 而 m_vertexShader 是一个 ID3D11ShaderVertex *。我很好奇第四个参数是干什么用的?它在哪里使用,我什么时候使用它,它有什么作用?它是什么有关系吗?我问,因为我在代码中调用它的位置,如果它除了唯一之外没有其他目的,我不希望用户必须指定它。