https://docs.microsoft.com/en-us/previous-versions//ff729720(v=vs.85)?redirectedfrom=MSDN
μ λ΄μ©μ μ°Έκ³ νμ¬ μ 리ν λ΄μ©μ λλ€.
Direct3D 11μ μ μ μ
°μ΄λ, μ§μ€λ©νΈλ¦¬ μ
°μ΄λ, ν½μ
μ
°μ΄λλ₯Ό μ§μνλ€.
μ μ μ
°μ΄λλ μ μ μ μ
λ ₯μΌλ‘ λ°μ μ μ λ²νΌλ₯Ό ν΅ν΄ GPUλ‘ μ λ¬λλ λͺ¨λ μ μ μ λν΄ ν λ²μ© μ€νλλ€.
μ§μ€λ©νΈλ¦¬ μ
°μ΄λλ μ , μ , μΌκ°ν λ±μ μ
λ ₯μΌλ‘ λ°μ κ°κ° ν λ²μ© μ€νλλ€.
ν½μ
μ
°μ΄λλ λ λλ§νκ³ μ νλ ν½μ
λ§λ€ ν λ²μ© μ€νλλ€.
μ§μ€λ©νΈλ¦¬ μ °μ΄λλ μ νμ¬νμ΄λ€.
μ€ν μμ : μ μ μ °μ΄λ -> (μ§μ€λ©νΈλ¦¬ μ °μ΄λ) -> λ μ€ν°λΌμ΄μ -> ν½μ μ °μ΄λ
μ μ μ
°μ΄λμ κ°μ₯ μ€μν μν μ λ³ν(transformation)μ΄λ€.
μλ₯Ό λ€μ΄ μΌκ°νμ΄ 2D ν
μ€μ² λ²νΌμ κ·Έλ €μ§ λ GPUλ κΌμ§μ μ΄ κ·Έλ €μ§ λ²νΌ μμ μ μ 2D μ’νλ₯Ό μμμΌ νλ€.
μ°μ μ΄ νν 리μΌμμλ λ³νμ μ§ννμ§ μλλ€.
Direct3D 11 νν 리μΌμμλ μ °μ΄λλ₯Ό HLSL(High-Level Shading Language)λ‘ μμ±νμλ€.
μ μ μ °μ΄λλ λ€μκ³Ό κ°λ€.
π μ μ μ °μ΄λ
float4 VS( float4 Pos : POSITION ) : SV_POSITION
{
return Pos;
}
λͺ¨λν°λ ν½μ λ€μ 2μ°¨μ 격μμ΄κ³ , κ°κ°μ ν½μ λ€μ λ 립μ μΈ μκΉμ κ°μ§κ³ μλ€. λ°λΌμ μ°λ¦¬κ° 보λ μΌκ°νμ μ€μ λ‘λ μλ κ·Έλ¦Όμμ μ€λ₯Έμͺ½κ³Ό κ°μ ννμ΄λ€.
μΈ κ°μ μ μ μΌλ‘ μ μλ μΌκ°νμ ν½μ
λͺ¨μμΌλ‘ λ³ννλ κ³Όμ μ λ μ€ν°λΌμ΄μ¦λΌκ³ νλ€. GPUλ λ¨Όμ λ λλ§λλ μΌκ°νμ ν¬ν¨λλ ν½μ
μ κ²°μ νλ€. κ·Έλ° λ€μ κ° ν½μ
μ λν΄ νμ± ν½μ
μ
°μ΄λλ₯Ό νΈμΆνλ€.
ν½μ
Έ μ
°μ΄λμ μ£Όλ λͺ©μ μ μ μ μ
°μ΄λλ μ§μ€λ©νΈλ¦¬λΆν° μ
λ ₯μ μ»μ΄μ κ° ν½μ
μ μκΉμ κ³μ°νλ κ²μ΄λ€.
μ΄ μμμ κ³μ°ν λ€μ λ€μ νμ΄νλΌμΈμΌλ‘ 보λΈλ€.
π ν½μ μ °μ΄λ
float4 PS( float4 Pos : SV_POSITION ) : SV_Target
{
return float4( 1.0f, 1.0f, 0.0f, 1.0f ); // Yellow, with Alpha = 1
}
SV_Target : λ λ νκ² νμμΌλ‘μ μΆλ ₯μ μλ―Έ
D3DX11CompileFromFile()λ₯Ό νΈμΆνμ¬ λ§λ€ μ μλ€.
π μ΄ν리μΌμ΄μ μ½λμμ μ °μ΄λ λ§λ€κΈ°
// Create the vertex shader
if( FAILED( D3DX11CompileFromFile( "Tutorial03.fx", NULL, NULL, "VS", "vs_4_0", D3DCOMPILE_ENABLE_STRICTNESS, NULL, NULL, &pVSBlob, &pErrorBlob, NULL ) ) )
return FALSE;
// Create the pixel shader
if( FAILED( D3DX11CompileFromFile( "Tutorial03.fx", NULL, NULL, "PS", "ps_4_0", D3DCOMPILE_ENABLE_STRICTNESS, NULL, NULL, &pPSBlob, &pErrorBlob, NULL ) ) )
return FALSE;