|
|
代码:
//-----------------------------------------------------------------------------
// Vertex Shader: VertNoLight
// Desc: 无光照的顶点着色器,显示物体的原始颜色
//-----------------------------------------------------------------------------
void VertNoLight( float4 iPos : POSITION,
// float3 iNormal : NORMAL,
float2 iTex : TEXCOORD0,
out float4 oPos : POSITION,
out float2 Tex : TEXCOORD0 )
{
// Transform position to view space
oPos = mul( iPos, g_mWorldView );
// Transform to screen coord
oPos = mul( oPos, g_mProj );
// Propagate texture coord
Tex = iTex;
}
//-----------------------------------------------------------------------------
// Pixel Shader: PixNoLight
// Desc: 无光照的像素着色器,显示物体的原始颜色
//-----------------------------------------------------------------------------
float4 PixNoLight( float2 Tex : TEXCOORD0) : COLOR
{
return tex2D( g_samScene, Tex );
}
//-----------------------------------------------------------------------------
// Technique: RenderNoLight
// Desc: 不处理光照的着色器
//-----------------------------------------------------------------------------
technique RenderNoLight
{
pass p0
{
VertexShader = compile vs_1_1 VertNoLight();
PixelShader = compile ps_1_1 PixNoLight();
}
}
调用代码:
UINT cPass;
if( FAILED( m_pEffect->Begin( &cPass, 0 ) ) )
NcaTextOutW( TEXT( "err" ) ) ;
for( UINT p = 0; p < cPass; ++p )
{
if( FAILED( m_pEffect->BeginPass( p ) ) )
NcaTextOutW( TEXT( "err" ) ) ;
for( DWORD i=0; i<m_dwNumMaterials; i++ )
{
// Set the material and texture for this subset
D3DXVECTOR4 vDif( m_pMeshMaterialsTiger[i].Diffuse.r,
m_pMeshMaterialsTiger[i] .Diffuse.g,
m_pMeshMaterialsTiger[i] .Diffuse.b,
m_pMeshMaterialsTiger[i] .Diffuse.a );
m_pEffect->SetVector( "g_vMaterial", &vDif ) ;
m_pEffect->SetTexture( "g_txScene", m_pMeshTextures[i] ) ;
if( FAILED( m_pEffect->CommitChanges() ) )
NcaTextOutW( TEXT( "err" ) ) ;
// Draw the mesh subset
m_pMeshTiger->DrawSubset( i );//
};
m_pEffect->EndPass() ;
}
m_pEffect->End() ;
为什么呢?谢谢了
或者谁有渲染模型的简单着色器示例发出来共享一下也好呀~ |
-
|