@@ -1987,8 +1987,10 @@ namespace Ogre {
1987
1987
// Lock, we'll be locking the (suppressed hardware update) shadow buffer
1988
1988
HardwareBufferLockGuard posLock (esrPositionBuffer, HardwareBuffer::HBL_NORMAL);
1989
1989
float * pSrc = static_cast <float *>(posLock.pData );
1990
- float * pDest = pSrc + (egi->vertexData ->vertexCount * 3 );
1991
- memcpy (pDest, pSrc, sizeof (float ) * 3 * egi->vertexData ->vertexCount );
1990
+ float * pDest = pSrc + (egi->vertexData ->vertexCount * 4 );
1991
+ memcpy (pDest, pSrc, sizeof (float ) * 4 * egi->vertexData ->vertexCount );
1992
+ for (size_t i = 0 ; i < egi->vertexData ->vertexCount ; i++)
1993
+ pDest[i * 4 + 3 ] = 0 ; // second part needs w=0
1992
1994
}
1993
1995
if (egi->vertexData == mMesh ->sharedVertexData )
1994
1996
{
@@ -2121,18 +2123,11 @@ namespace Ogre {
2121
2123
// Create vertex data which just references position component (and 2 component)
2122
2124
mRenderOp .vertexData = OGRE_NEW VertexData ();
2123
2125
// Map in position data
2124
- mRenderOp .vertexData ->vertexDeclaration ->addElement (0 ,0 ,VET_FLOAT3 , VES_POSITION);
2126
+ mRenderOp .vertexData ->vertexDeclaration ->addElement (0 ,0 ,VET_FLOAT4 , VES_POSITION);
2125
2127
mOriginalPosBufferBinding =
2126
2128
vertexData->vertexDeclaration ->findElementBySemantic (VES_POSITION)->getSource ();
2127
2129
mPositionBuffer = vertexData->vertexBufferBinding ->getBuffer (mOriginalPosBufferBinding );
2128
2130
mRenderOp .vertexData ->vertexBufferBinding ->setBinding (0 , mPositionBuffer );
2129
- // Map in w-coord buffer (if present)
2130
- if (vertexData->hardwareShadowVolWBuffer )
2131
- {
2132
- mRenderOp .vertexData ->vertexDeclaration ->addElement (1 ,0 ,VET_FLOAT1, VES_TEXTURE_COORDINATES, 0 );
2133
- mWBuffer = vertexData->hardwareShadowVolWBuffer ;
2134
- mRenderOp .vertexData ->vertexBufferBinding ->setBinding (1 , mWBuffer );
2135
- }
2136
2131
// Use same vertex start as input
2137
2132
mRenderOp .vertexData ->vertexStart = vertexData->vertexStart ;
2138
2133
0 commit comments