나는 삼각형 내의 위치에 따라 삼각형을 색칠하는 shader.hlsl 파일을 사용하여 화면에 삼각형을로드하려면이 DirectX11의 PROJ를 얻으려고 노력하고 있어요 (이 함께 혼합 멀티 컬러 삼각형). 이번에는 정상적인 출력 오류가 발생하지 않습니다. 이 방법에 접근/처리하는 방법을 모릅니다. shaders.hlsl 파일shader.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;
}
그것은 불가능하다. – Mankarse
이 쉐이더 파일의 코드 그러나 나는 모든 사람들이 효율적으로 진행되고 그 밖의 무엇을 이해할 수 있도록 포함 다른 모르겠어요. –
@NicholasVaughn 다음 번에 질문에 코드를 추가하십시오. 나는 지금 너를 위해 그렇게 해왔다. 당신이 이상한 출력을 얻을 경우, 그것은 표시하거나 출력은 당신이 얻을하고 당신이 싶은 것이 어떻게 다른지/볼 것으로 예상 무엇인지 설명하는 당신의 최대 관심사에 일반적입니다. – Bart