//미니맵용 메시를 읽어들인다. Ogre::Entity* pTmpEntity= m_pSceneMgr->createEntity("TmpEntity", "실제메시파일이름"); Ogre::SubMesh* pSubMesh = pTmpEntity->getMesh()->getSubMesh(0); //미니맵용 버텍스 버퍼를 가져온다. Ogre::HardwareVertexBufferSharedPtr tmpVertexBuffer = pSubMesh ->vertexData->vertexBufferBinding->getBuffer( 0 ); //미니맵용 인덱스 버퍼를 가져온다. Ogre::HardwareIndexBufferSharedPtr tmpIndexBuffer = pTmpSubMesh->indexData->indexBuffer; float* pVertex = static_cast<float*>( tmpVertexBuffer->lock( Ogre::HardwareBuffer::HBL_READ_ONLY ) ); unsigned short* pIndices = static_cast<unsigned short*>(tmpIndexBuffer->lock(Ogre::HardwareBuffer::HBL_DISCARD)); for (size_t i=0; i<=tmpSubMesh->indexData->indexCount; ++i , ++pIndices){ x = (*pIndices)*3; y = (*pIndices)*3+1; z = (*pIndices)*3+2; //아래 벡터vPosition가 해당메시의 버텍스 위치를 가진 벡터가 된다. Ogre::Vector3 vPosition(pVertex[x],pVertex[y],pVertex[z]); } //버텍스, 인덱스 버퍼 락건거 풀어준다. tmpIndexBuffer->unlock(); tmpVertexBuffer->unlock(); m_pSceneMgr->destroyEntity(pTmpEntity);
뭐 이런식으로 하면 됩니다.
인덱스 버퍼는 생각도 못하고 가진 버텍스만 가지고 라인스트립이라던지 트라이앵글스트립 등등으로 해볼려고 하니 제대로 안나오더군요.
답글 남기기