Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vytváření a vazba vyrovnávacích pamětí není nutná, pokud vaše shadery nevyžadují vyrovnávací paměti. Tato část obsahuje příklad jednoduchých vrcholových a pixelových shaderů, které nakreslí jeden trojúhelník.
- Vertex Shader
- shaderu pixelů
- techniky
- Kód aplikace
- související témata
Vertexový shader
Můžete například deklarovat shader vrcholů, který vytvoří vlastní vrcholy.
struct VSIn
{
uint vertexId : SV_VertexID;
};
struct VSOut
{
float4 pos : SV_Position;
float4 color : color;
};
VSOut VSmain(VSIn input)
{
VSOut output;
if (input.vertexId == 0)
output.pos = float4(0.0, 0.5, 0.5, 1.0);
else if (input.vertexId == 2)
output.pos = float4(0.5, -0.5, 0.5, 1.0);
else if (input.vertexId == 1)
output.pos = float4(-0.5, -0.5, 0.5, 1.0);
output.color = clamp(output.pos, 0, 1);
return output;
}
Shader pixelů
// NoBuffer.fx
// Copyright (c) 2004 Microsoft Corporation. All rights reserved.
//
struct PSIn
{
float4 pos : SV_Position;
linear float4 color : color;
};
struct PSOut
{
float4 color : SV_Target;
};
PSOut PSmain(PSIn input)
{
PSOut output;
output.color = input.color;
return output;
}
Technika
Technika je soubor průchodů vykreslování (musí být alespoň jeden průchod).
VertexShader vsCompiled = CompileShader( vs_4_0, VSmain() );
technique10 t0
{
pass p0
{
SetVertexShader( vsCompiled );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PSmain() ));
}
}
Kód aplikace
m_pD3D11Device->IASetInputLayout( NULL );
m_pD3D11Device->IASetPrimitiveTopology( D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
ID3DX11EffectTechnique * pTech = NULL;
pTech = m_pEffect->GetTechniqueByIndex(0);
pTech->GetPassByIndex(iPass)->Apply(0);
m_pD3D11Device->Draw( 3, 0 );
Související témata