|
|
比如天空,结果在渲染的时候发现了问题:
我目前打算使用纹理坐标移动的方式,但是结果出人意料……
// 纹理渲染
g_pd3dDevice->SetTexture( 0, m_pTexture0 );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
// 镜像纹理
if (mirror){
//g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ADDRESSU, D3DTADDRESS_MIRROR ) ;
//g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ADDRESSV, D3DTADDRESS_MIRROR ) ;
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );
}
即使我用注释去掉了ADDRESSU两行,图像一定会变小!
结果发现可能是因为使用了
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );
缘故,不得已,在平移纹理的时候使用了放大处理……然后不需要mirror的纹理使用一个开关关掉,而在需要的时候,打开开关,但是这样一来,如果我要使一张纹理而又要平移,且不缩小……那怎么办?
PS:除了整个以上的方法还有别的方法做卷动背景吗?以前用过多个QUAD作为卷动的方法……不过不是很好 |
|