实验十九、纹理动画和AlPHA测试
1、 实验目的
1、 掌握D3D的纹理
2、 实验步骤
1、 打开vs.net2005,打开ftp上的3Ddemo14项目,执行并观看结果。
2、 在InitD3D函数中,把纹理混合参数的设置注释掉,如下图。这样只显示第0层纹理。
3、 添加一个新函数,动态改变纹理坐标。
void UpdateTexture()
{
CUSTOMVERTEX* v = 0;
g_pVertexBuffer->Lock(0, 0, (void**)&v, 0);
//锁住顶点缓冲,来填充顶点数据
v[0].u +=0.001;
v[1].u +=0.001;
v[2].u +=0.001;
v[3].u +=0.001;
g_pVertexBuffer->Unlock();
}
4、 在渲染函数中调用该函数。
5、 改变加载的图片。
if(FAILED(SetTexture(TEXT("tree.bmp"),2)))
{
return E_FAIL;
}
6、 更改这个纹理的加载
//if(FAILED(SetTexture(TEXT("tree.bmp"),2)))
//{
//
return E_FAIL;
//}
D3DXCreateTextureFromFileEx(g_pD3DDevice, TEXT("tree.bmp"),
D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_A8R8G8B8,
D3DPOOL_MANAGED, D3DX_FILTER_TRIANGLE, D3DX_FILTER_TRIANGLE,
D3DCOLOR_RGBA(0,0,0,255), NULL, NULL, &g_pTexture[2]);
7、 制定使用ALPHA测试
g_pD3DDevice->SetStreamSource(0, g_pVertexBuffer,0, sizeof(CUSTOMVERTEX));
objRec[2].z=-5;
objRec[2].fXAngle =0.3;
objRec[2].fScale =2;
SetupRotation(2);
g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
g_pD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);
g_pD3DDevice->SetRenderState(D3DRS_ALPHAREF, 0x01);
g_pD3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
g_pD3DDevice->SetTexture(0,g_pTexture[2]);
g_pD3DDevice->SetTexture(1,g_pTexture[3]);
g_pD3DDevice->SetMaterial(&matMaterial[2]);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0,
2);
本文档为【三维编程实验十九、纹理动画和alpha测试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。