最近打算做几款2-D小游戏,当然是用Direct3D来做的,所以就要使用Direct3D提供的2D顶点了。说是2D顶点,其实却有4个分量!而正是因为这种矛盾性,所以使用起来有不少注意事项。这些是我浪费了很多的青春而发现的,希望大家吸取教训啊!
具体来说,有这么几个方面的注意事项:
1、 2-D顶点结构的定义
比如,要定义一个带纹理坐标的2-D顶点结构,那么应该定义如下:
struct Vertex2DTex
{
Vertex2DTex():pos2D(0.0f, 0.0f, 1.0f, 1.0f), texCoord(0.0f, 0.0f){}
Vertex2DTex(floatx, float y, float u, float v) :
pos2D(x,y, 1.0f, 1.0f), texCoord(u, v) {}
Vertex2DTex(floatx, float y, float z, float rhw, float u, float v) :
pos2D(x,y, z, rhw), texCoord(u, v){}
Vertex2DTex(const D3DXVECTOR4& thePos2D, const D3DXVECTOR2& uv) :
pos2D(thePos2D),texCoord(uv){}
inline Vertex2DTex& operator=(const Vertex2DTex& rhs)
{
if(this != &rhs)
{
pos2D= rhs.pos2D;