我有一個沒有任何技術定義的.fx文件。在我的代碼,加載我的頂點和像素着色我用如何從.fxo文件創建ID3D11VertexShader?
ID3DBlob* pVSBlob = NULL;
ID3DBlob* pErrorBlob;
hr = D3DX11CompileFromFile("shader.fx", NULL, NULL, "VS", "vs_4_0",
dwShaderFlags, 0, NULL, &pVSBlob, &pErrorBlob, NULL);
然後進行着色器
hr = g_pd3dDevice->CreateVertexShader(pVSBlob->GetBufferPointer(), pVSBlob->GetBufferSize(), NULL, &g_pVertexShader);
這種運作良好,而當談到時間來渲染,我只是用
g_pImmediateContext->VSSetShader(g_pVertexShader, NULL, 0);
g_pImmediateContext->PSSetShader(g_pPixelShader, NULL, 0);
設置着色器。我想將.fx文件編譯爲一個.fxo文件,但我看到加載.fxo文件的唯一方法是使用D3DX11CreateEffectFromMemory。但是,我不想使用Effect接口,而且我的.fx文件中也沒有技術。除了.fxo文件而不是.fx文件外,是否有像上面那樣加載着色器的方法?
如果您不想要或不需要特效,可能更容易將着色器放入HLSL文件中。 –