读书人

dx9 创办球体 模拟地球

发布时间: 2013-11-21 23:38:25 作者: rapoo

dx9 创建球体 模拟地球
初学directx9 想做一个球体,模拟地球,但发现贴图有严重问题。


struct VERTEX
{
D3DXVECTOR3 pos ; // Vertex position
D3DXVECTOR3 norm ; // Vertex normal
float tu ; // Texture coordinate u
float tv ; // Texture coordinate v
} ;


ID3DXMesh* mesh;
D3DXCreateSphere(Device,1.0f, 40,40,&mesh,0);
ID3DXMesh* texMesh;
mesh->CloneMeshFVF(D3DXMESH_SYSTEMMEM, FVF_VERTEX, Device, &texMesh);
mesh->Release();
VERTEX* pVerts ;
texMesh->LockVertexBuffer(0, (void**)&pVerts);
int numVerts = texMesh->GetNumVertices() ;
for (int i =0; i < numVerts; i++)
{
if(pVerts->norm.z >= 0 && pVerts->norm.y >= 0)
pVerts->tu = asinf(pVerts->norm.z) / (2 * D3DX_PI);
else if(pVerts->norm.z >= 0 && pVerts->norm.y <= 0)
pVerts->tu = (180 - asinf(pVerts->norm.z)) / (2 * D3DX_PI);
else if(pVerts->norm.z <= 0 && pVerts->norm.y <= 0)
pVerts->tu = (180 - asinf(pVerts->norm.z)) / (2 * D3DX_PI);
else if(pVerts->norm.z <= 0 && pVerts->norm.y >= 0)
pVerts->tu = (360 + asinf(pVerts->norm.z)) / (2 * D3DX_PI);
pVerts->tv = asinf(pVerts->norm.x) / D3DX_PI + 0.5f ;
++pVerts ;
}
texMesh->UnlockVertexBuffer() ;


贴图纵坐标没问题,但横坐标就有严重的拉伸,以及对不上号

请问坐标应该怎么转换
[解决办法]
怎么啦,这个问题...

读书人网 >VC/MFC

热点推荐