📄 water.cpp
字号:
#include "Water.h"
CAlphaTextuer::CAlphaTextuer(LPDIRECT3DDEVICE9 pd3dDevice,LPSTR TexturName)
{
m_pd3dDevice=pd3dDevice;
m_TexturName=TexturName;
m_vSacle=D3DXVECTOR3(1.0f,1.0f,1.0f);
m_vTrans=D3DXVECTOR3(0.0f,0.0f,0.0f);
m_pointX[0]=-1.0f;
m_pointX[1]=-3.0f;
m_fRotatle=0.0f;
m_pVB=NULL;
InitVB();
}
void CAlphaTextuer::InitVB()
{
D3DXCreateTextureFromFile(m_pd3dDevice,m_TexturName,&m_pTextuer);
m_pd3dDevice->CreateVertexBuffer(sizeof(m_cvVertor),0,D3DFVF_VEFTORFROM,D3DPOOL_DEFAULT,&m_pVB,NULL);
VERTORFROM cvVertor[]={ {-1.0f,0.0f,1.0f,0.0f,0.0f},//1
{1.0f,0.0f,1.0f,1.0f,0.0f},//2
{-1.0f,0.0f,-1.0f,0.0f,1.0f},//3
{1.0f,0.0f,-1.0f,1.0f,1.0f},//4
{-3.0f,0.0f,1.0f,0.0f,0.0f},//5
{-1.0f,0.0f,1.0f,1.0f,0.0f},//6
{-3.0f,0.0f,-1.0f,0.0f,1.0f},//7
{-1.0f,0.0f,-1.0f,1.0f,1.0f},};//8
for (int i=0;i<8;i++)
{
m_cvVertor[i].tu=cvVertor[i].tu;
m_cvVertor[i].tv=cvVertor[i].tv;
m_cvVertor[i].x=cvVertor[i].x;
m_cvVertor[i].y=cvVertor[i].y;
m_cvVertor[i].z=cvVertor[i].z;
}
m_pVB->Lock(0,sizeof(m_cvVertor),(void**)&m_pVertor,0);
memcpy(m_pVertor,m_cvVertor,sizeof(m_cvVertor));
m_pVB->Unlock();
}
void CAlphaTextuer::CopyToVB()
{
m_cvVertor[2].x=m_cvVertor[0].x=m_pointX[0];
m_cvVertor[3].x=m_cvVertor[1].x=m_pointX[0]+2.0f;
m_cvVertor[4].x=m_cvVertor[6].x=m_pointX[1];
m_cvVertor[5].x=m_cvVertor[7].x=m_pointX[1]+2.0f;
m_pVB->Lock(0,sizeof(m_cvVertor),(void**)&m_pVertor,0);
memcpy(m_pVertor,m_cvVertor,sizeof(m_cvVertor));
m_pVB->Unlock();
}
void CAlphaTextuer::Move()
{
if (m_pointX[0]<1.0f)
{
m_pointX[0]+=m_fSpeed;
}
else
{
m_pointX[0]=-2.984f;
}
if (m_pointX[1]<1.0f)
{
m_pointX[1]+=m_fSpeed;
}
else
{
m_pointX[1]=-2.984f;
}
CopyToVB();
}
void CAlphaTextuer::Render()
{
D3DXMATRIXA16 matWorld,matTrans,matSacle,matRotatle;
D3DXMatrixIsIdentity(&matWorld);
D3DXMatrixTranslation(&matTrans,m_vTrans.x,m_vTrans.y,m_vTrans.z);
D3DXMatrixScaling(&matSacle,m_vSacle.x,m_vSacle.y,m_vSacle.z);
D3DXMatrixRotationZ(&matRotatle,m_fRotatle);
matWorld=matRotatle*matTrans*matSacle;
m_pd3dDevice->SetTransform(D3DTS_WORLD,&matWorld);
m_pd3dDevice->SetTexture(0,m_pTextuer);
m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
m_pd3dDevice->SetStreamSource(0,m_pVB,0,sizeof(VERTORFROM));
m_pd3dDevice->SetFVF(D3DFVF_VEFTORFROM);
m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,4,2);
m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,false);
Move();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -