나는 HLSL의 구문을 이해한다. 예를 들어 이것을 HLSL로 여기는 척하자.
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
VOut VShader(float4 position : POSITION, float4 color : COLOR)
{
VOut output;
output.position = position;
output.position.xy *= 0.7f; // "shrink" the vertex on the x and y axes
output.color = color;
return output;
}
float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}
그리고 나는 이것을 다음과 같이 컴파일합니다 :
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "VShader", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"shaders.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);
HLSL과 화면의 실제 픽셀 / 버텍스 사이의 파이프 라인이 무엇인지 정확히 혼동하고 있습니다.
이것이 실제로 "적용되는"것입니까?
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);
나는 이 물건에 대한 문자 초보자 와 같습니다. 누군가가 어쩌면 설명 할 수 무엇 은하고있어? 정점 HLSL 함수가 모든 정점을 통과 한 다음 함수에있는 것으로 변경한다고 가정하고 출력은 픽셀 쉐이더에 대해 변경된 것과 비슷합니까?
또 다른 혼란은 픽셀이 무엇인지 알고 정점이 무엇인지 이해합니다 ...하지만 픽셀 쉐이더가 정확히 무엇을합니까?