Code: Select all
mVertexData = std::make_unique<VertexData>();
mRenderOp.vertexData = mVertexData.get();
const int OneQuadVertexCount = 6;
mRenderOp.indexData = nullptr;
mRenderOp.vertexData->vertexStart = 0;
mRenderOp.vertexData->vertexCount = OneQuadVertexCount;
mRenderOp.operationType = RenderOperation::OT_TRIANGLE_LIST;
mRenderOp.useIndexes = false;
VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
VertexBufferBinding* bind = mRenderOp.vertexData->vertexBufferBinding;
size_t offset = 0;
// create/bind positions/tex.ccord. buffer
if (!decl->findElementBySemantic(Ogre::VES_POSITION))
decl->addElement(0, offset, Ogre::VET_FLOAT3, Ogre::VES_POSITION);
offset += VertexElement::getTypeSize(Ogre::VET_FLOAT3);
if (!decl->findElementBySemantic(Ogre::VES_TEXTURE_COORDINATES))
decl->addElement(0, offset, Ogre::VET_FLOAT2, Ogre::VES_TEXTURE_COORDINATES, 0);
offset += VertexElement::getTypeSize(Ogre::VET_FLOAT2);
if (!decl->findElementBySemantic(Ogre::VES_DIFFUSE))
decl->addElement(0, offset, Ogre::VET_COLOUR, Ogre::VES_DIFFUSE);
HardwareVertexBufferSharedPtr ptbuf = HardwareBufferManager::getSingleton().createVertexBuffer(
decl->getVertexSize(0), mRenderOp.vertexData->vertexCount, HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
bind->setBinding(0, ptbuf);
i made many HardwareBuffer in above code.
but each HardwareBuffer's lock pointer is all same...
Code: Select all
char* const pStartBuf = static_cast<char*>(hardwareBufferPtr->lock(HardwareBuffer::HBL_DISCARD));
Did I do something wrong?