Study/Directx 10

삼각형 렌더링

붕대마음 2010. 5. 5. 13:05
반응형

전의 삼각형 렌더링 예제에서는 정점쉐이더가 입력정점의 위치좌표를 그대로 리턴하였는데
이는 정점의 위치가 이미 클립공간에서의 위치일 경우에만 유효하다.
일반적으로 입력정점의 위치가 로컬공간이므로 정점쉐이더에서 이를 클립공간으로 변환해 주어야 한다.

D3DXMATRIX matProjection;
ID3D10EffectMatrixVariable* pkmatProjectionVariable = NULL;

D3DXMatrixPerspectiveFovLH( &matProjection, (float)D3DX_PI * 0.5f, (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT, 1.0f, 1000.0f );

 // 상수버퍼 변수들을 얻는다.
 pkmatProjectionVariable = pkEffect->GetVariableByName( "matProjection" )->AsMatrix();

 // 상수버퍼에 행렬값을 지정한다.
 pkmatProjectionVariable->SetMatrix( (float*)&matProjection );

fx.
matrix matProjection;

float4 VS( float4 pos : POSITION ) : SV_POSITION
{
 return mul(pos, matProjection);
}

float4 PS( float4 pos : SV_POSITION ) : SV_Target
{
 return float4( 0.0f, 0.0f, 1.0f, 1.0f );
}

technique10 Render
{
 pass P0
 {
  SetVertexShader( CompileShader( vs_4_0, VS() ) );
  SetGeometryShader( NULL );
  SetPixelShader( CompileShader( ps_4_0, PS() ) );
 }
}