簡體   English   中英

shader.hlsl文件導致錯誤?

[英]shader.hlsl file causes error?

我正在嘗試使此DirectX11項目在屏幕上加載一個三角形,該陰影使用shader.hlsl文件根據三角形內的位置為三角形着色(它是一個混合在一起的多色三角形)。 我這次也沒有出現正常的輸出錯誤。 不確定如何處理/處理此問題。

//調用shaders.hlsl文件的函數

void InitPipeline()

{

// load and compile the two shaders

ID3D10Blob *VS, *PS;
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile("shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);

// encapsulate both shaders into shader objects
dev->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);

// set the shader objects
devcon->VSSetShader(pVS, 0, 0);
devcon->PSSetShader(pPS, 0, 0);

// create the input layout object
D3D11_INPUT_ELEMENT_DESC ied[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

dev->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
devcon->IASetInputLayout(pLayout);

}

struct VOut { 
    float4 position : SV_POSITION; 
    float4 color : COLOR; 
}; 

VOut VShader(float4 position : POSITION, float4 color : COLOR) { 
    VOut output; 
    output.position = position; 
    output.color = color; 
    return output; 
} 

float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET {
    return color; 
} 

您正在使用Visual Studio嗎? 右鍵單擊shaders.hlsl ,找到完整的路徑,然后將D3DX11CompileFromFile函數中的shaders.hlsl替換為絕對路徑。 確保將\\字符替換為\\\\ ,以使其正確轉義。

Visual Studio將shaders.hlsl與源代碼放在同一位置,這意味着您的程序找不到它。 藍色窗口仍在顯示嗎? 那就是我遇到的問題。

暫無
暫無

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

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