2011-10-30 4 views
0

나는 삼각형 내의 위치에 따라 삼각형을 색칠하는 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; 
} 
+0

그것은 불가능하다. – Mankarse

+0

이 쉐이더 파일의 코드 그러나 나는 모든 사람들이 효율적으로 진행되고 그 밖의 무엇을 이해할 수 있도록 포함 다른 모르겠어요. –

+0

@NicholasVaughn 다음 번에 질문에 코드를 추가하십시오. 나는 지금 너를 위해 그렇게 해왔다. 당신이 이상한 출력을 얻을 경우, 그것은 표시하거나 출력은 당신이 얻을하고 당신이 싶은 것이 어떻게 다른지/볼 것으로 예상 무엇인지 설명하는 당신의 최대 관심사에 일반적입니다. – Bart

답변

1

를 호출

// 기능은 비주얼 스튜디오를 사용하고 있습니까? 오른쪽, shaders.hlsl을 클릭의 전체 경로를 발견하고 절대 경로로 D3DX11CompileFromFile 기능에 shaders.hlsl를 교체합니다. 제대로 이스케이프하는 \\\ 문자를 대체해야합니다.

Visual Studio는 소스 코드와 동일한 위치에 shaders.hlsl을 남겨 둡니다. 이는 프로그램에서 찾을 수 없음을 의미합니다. 파란색 창이 계속 표시됩니까? 그게 내가 가진 문제 야. 당신은 몇 가지 코드를 게시하지 않는 한 우리가 당신을 도울 수 있도록