diff --git a/panda/src/dxgsg/dxGraphicsStateGuardian.cxx b/panda/src/dxgsg/dxGraphicsStateGuardian.cxx index a0ad42e786..239251c8a7 100644 --- a/panda/src/dxgsg/dxGraphicsStateGuardian.cxx +++ b/panda/src/dxgsg/dxGraphicsStateGuardian.cxx @@ -2632,7 +2632,7 @@ GenerateSphere(void *pVertexSpace,DWORD dwVertSpaceByteSize, dwNumTriangles = (wNumRings-1) * wNumSections * 2; } else { dwNumVertices = *pNumVertices = wNumRings * wNumSections + 2; - dwNumTriangles = (wNumRings+1) * wNumSections * 2; + dwNumTriangles = wNumRings*wNumSections*2; } dwNumIndices = *pNumIndices = dwNumTriangles*3; @@ -2660,9 +2660,16 @@ GenerateSphere(void *pVertexSpace,DWORD dwVertSpaceByteSize, if(fvfFlags & D3DFVF_TEXCOUNT_MASK) \ add_to_FVFBuf((void *)texCoords, sizeof(TexCoordf)); +#ifdef DBG_GENSPHERE + int nvs_written=0; + memset(pVertexSpace,0xFF,dwNumVertices*dwVertSize); +#endif if(! DOTEXTURING) { ADD_GENSPHERE_VERTEX_TO_BUFFER(vTopPoint); + #ifdef DBG_GENSPHERE + nvs_written++; + #endif } // Generate vertex points for rings @@ -2682,11 +2689,6 @@ GenerateSphere(void *pVertexSpace,DWORD dwVertSpaceByteSize, } float phi,dphi = (float)(2*M_PI / (wNumSections-1)); //Angle between each section -#ifdef DBG_GENSPHERE - int nvs_written=0; - memset(pVertexSpace,0xFF,dwNumVertices*dwVertSize); -#endif - for(i = 0; i < wNumRings; i++ ) { float costheta,sintheta,cosphi,sinphi; phi = 0.0; @@ -2732,16 +2734,20 @@ GenerateSphere(void *pVertexSpace,DWORD dwVertSpaceByteSize, theta += dtheta; } -#ifdef DBG_GENSPHERE - assert(nvs_written == dwNumVertices); -#endif - if(! DOTEXTURING) { // Generate bottom vertex vNormal = D3DVECTOR( 0.0f, -1.0f, 0.0f ); ADD_GENSPHERE_VERTEX_TO_BUFFER(vBotPoint); + #ifdef DBG_GENSPHERE + nvs_written++; + #endif } +#ifdef DBG_GENSPHERE + assert(nvs_written == dwNumVertices); +#endif + + #ifdef DBG_GENSPHERE memset(pwIndices,0xFF,dwNumIndices*sizeof(WORD)); #endif @@ -2814,8 +2820,14 @@ GenerateSphere(void *pVertexSpace,DWORD dwVertSpaceByteSize, } #ifdef DBG_GENSPHERE - assert(CurFinalTriIndex == dwNumTriangles); - assert(base_index == dwNumIndices); + if(DOTEXTURING) { + assert(CurFinalTriIndex == dwNumTriangles); + assert(base_index == dwNumIndices); + } else { + assert(CurFinalTriIndex == dwNumTriangles-wNumSections); + assert(base_index == dwNumIndices-wNumSections*3); + } + for(i = 0; i < dwNumIndices; i++ ) assert(pwIndices[i]