游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1291|回复: 1

为什么我用着色器渲染模型之后之看到白色的轮廓?

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-8-7 22:24:00 | 显示全部楼层 |阅读模式
代码:
//-----------------------------------------------------------------------------
// 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() ;

为什么呢?谢谢了
或者谁有渲染模型的简单着色器示例发出来共享一下也好呀~
sf_200787222334.jpg

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-8-7 23:07:00 | 显示全部楼层

Re:为什么我用着色器渲染模型之后之看到白色的轮廓?

O,我明白了,因为电脑不支持像素着色器,
解决方法:
创建设备时使用D3DDEVTYPE_REF 就可以了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 13:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表