HLSL sözdizimini anlıyorum, örneğin bunu HLSL'im olarak görüyorum:
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;
}
ve ben şöyle derledim:
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);
Nasıl ... nasıl değişeceğini biliyor ... HLSL ve ekrandaki gerçek pikseller / köşeler arasındaki boru hattının tam olarak ne olduğunu karıştırıyorum.
Onları gerçekten "uygulayan" bu mu?
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);
Unutmayın , bu şeylerde gerçek bir acemi gibiyim . Birisi ne yaptığını açıklayabilir mi? Köşe HLSL işlevinin her tepe noktasından geçtiğini ve sonra işlevde ne olursa olsun onları değiştirdiğini ve çıktıda ne değiştiğini varsayıyorum ... ve benzer şekilde piksel gölgelendirici için?
Başka bir karışıklık, bir pikselin ne olduğunu biliyorum ve bir tepe noktasının ne olduğunu anlıyorum ... ama piksel gölgelendirici tam olarak ne yapıyor?