C++ 为什么我的球体纹理会断裂?[Directx 9,c+;+;]

C++ 为什么我的球体纹理会断裂?[Directx 9,c+;+;],c++,directx-9,C++,Directx 9,我使用D3DXCreateSphere()函数创建我的球体,我想得到顶点位置来计算纹理坐标,但它坏了!!!我需要帮助~ 这是我的结构顶点: 结构顶点{D3DXVECTOR3范数;float-tu;float-tv;} 这是我的代码: LPD3DXMESH mesh; LPD3DXMESH texMesh; D3DXCreateSphere(pDev, 3, 20, 20, &mesh, NULL); mesh->CloneMeshFVF(D3DXMESH_SYSTEMMEM

我使用D3DXCreateSphere()函数创建我的球体,我想得到顶点位置来计算纹理坐标,但它坏了!!!我需要帮助~

  • 这是我的结构顶点:

    结构顶点{D3DXVECTOR3范数;float-tu;float-tv;}

    这是我的代码:

    LPD3DXMESH mesh;
    LPD3DXMESH texMesh;
    
    D3DXCreateSphere(pDev, 3, 20, 20, &mesh, NULL);
    
    mesh->CloneMeshFVF(D3DXMESH_SYSTEMMEM, FVF_VERTEX, pDev, &texMesh);
    
    mesh->Release();
    
    _VERTEX *pVerts;
    if (SUCCEEDED(texMesh->LockVertexBuffer(0, (void **)&pVerts))) {
    
        int numVerts = texMesh->GetNumVertices();
    
        for (int i = 0; i<numVerts; i++) {
    
            pVerts->tu = asinf(pVerts->norm.x) / D3DX_PI + 0.5f;
            pVerts->tv = asinf(pVerts->norm.y) / D3DX_PI + 0.5f;
    
            pVerts++;
        }
    
        texMesh->UnlockVertexBuffer();
    }
    
    pDev->SetTexture(0, texture);
    texMesh->DrawSubset(0);
    
    LPD3DXMESH;
    LPD3DXMESH-texMesh;
    D3DXCreateSphere(pDev、3、20、20和网格,NULL);
    网格->CloneMeshFVF(D3DXMESH_SYSTEMMEM、FVF_VERTEX、pDev和texMesh);
    网格->释放();
    _顶点*pVerts;
    if(成功(texMesh->LockVertexBuffer(0,(void**)和pVerts))){
    int numVerts=texMesh->GetNumVertices();
    对于(int i=0;itu=asinf(pVerts->norm.x)/D3DX_PI+0.5f;
    pVerts->tv=asinf(pVerts->norm.y)/D3DX_PI+0.5f;
    pVerts++;
    }
    texMesh->UnlockVertexBuffer();
    }
    pDev->SetTexture(0,纹理);
    texMesh->DrawSubset(0);
    
    为什么要使用超过十年的Direct3D 9?D3DX已弃用且不再受支持。在任何情况下,您都可以查看包含球体的几何限制的源代码。为什么要使用超过十年的Direct3D 9?D3DX已弃用且不再受支持。在任何情况下,您都可以查看源代码包含球体的几何限制性的ce。