簡體   English   中英

無法從.cso文件(DirectX,C ++)加載Vertex Shader

[英]Unable to load Vertex Shader from .cso file (DirectX, c++)

我正在嘗試從我之前編譯的.cso文件加載頂點着色器。

我用來做的代碼是:

char* bytes = { 0 };
size_t fSize = readFileBytes("vsTex.cso", bytes);

hr = d3d11Device->CreateVertexShader((void*)bytes, fSize, NULL, &TexVertexShader);
if (hr != S_OK){
    MessageBox(NULL, "FAIL", "ERROR", NULL);
}

readFileBytes:

  long readFileBytes(const char *name, char* bytes)
    {
        FILE *fl; 
        fopen_s(&fl, name, "r");
        fseek(fl, 0, SEEK_END);
        long len = ftell(fl);
        bytes = (char*)malloc(len);
        fseek(fl, 0, SEEK_SET);
        fread(bytes, 1, len, fl);
        fclose(fl);
        return len;
    }

d3d11Device是一個指向ID3D11Device的指針。 我一直在使用D3D11CompileFromFile()創建我的頂點着色器,沒有任何錯誤,所以據我所知,着色器本身沒有任何問題。

我不確定我是否只是錯誤地讀取文件,或者在給函數提供字節之前是否還有其他事情要做。

我注意到的幾件事可能會引起一些問題。

long readFileBytes(const char *name, char* bytes)

long readFileBytes(const char *name, char*& bytes) //pass in bytes by reference

fopen_s(&fl, name, "r");

fopen_s(&fl, name, "rb"); //open file in binary mode

最后,在創建着色器后不要忘記釋放字節。

free(bytes);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM