Ogre3d 엔진에서 특정Entity의 버텍스정보랑 인덱스 정보에 접근하는 방법

현재 페이지를 로딩중입니다.
만약 페이지 로딩이 끝났는데 본문이 보이지 않는다면
광고차단 플러그인 때문이니 잠시 플러그인을 꺼주시면 감사하겠습니다.

The current page is loading.
If the page loading is over but the text is not visible
This is because of the ad blocking plugin, so please be sure to turn off the plugin for a while.

위 사진은 본문과 아무런 상관이 없는 그냥 제 애완식물(?) 프레디입니다.

//미니맵용 메시를 읽어들인다.
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);

뭐 이런식으로 하면 됩니다.
인덱스 버퍼는 생각도 못하고 가진 버텍스만 가지고 라인스트립이라던지
트라이앵글스트립 등등으로 해볼려고 하니 제대로 안나오더군요.

크리에이티브 커먼즈 라이선스 Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.