OpenGL에서 3D 모델을로드하려고했습니다. 나는 2000 개의 꼭짓점을 가진 작은 모델을로드하는 데 성공했습니다. 이제는 동일한 로더를 사용하여 350000 개의 꼭지점이있는 모델을로드하려고 시도하지만 단순히 나타나지 않습니다. 은 내가 http://www.morrowland.com/apron/tut_gl.php 에서 로더를 사용하고이 내가 3DS 형식을 사용하고OpenGL에서 3D 모델로드
내가 3DS 모델
void C3dsLoader::Render_3ds()
{
for(int i = 0; i < m3DModel.numOfObjects; i++)
{
if(m3DModel.pObject.size() <= 0) break;
t3DObject *pObject = &m3DModel.pObject[i];
if(pObject->bHasTexture)
{
glEnable(GL_TEXTURE_2D);
glColor3ub(255, 255, 255);
glBindTexture(GL_TEXTURE_2D, TextureArray3ds[pObject->materialID]);
}
else
{
glDisable(GL_TEXTURE_2D);
glColor3ub(255, 255, 255);
}
glBegin(GL_TRIANGLES);
for(int j = 0; j < pObject->numOfFaces; j++)
{
for(int whichVertex = 0; whichVertex < 3; whichVertex++)
{
int index = pObject->pFaces[j].vertIndex[whichVertex];
glNormal3f(pObject->pNormals[ index ].x, pObject->pNormals[ index ].y, pObject->pNormals[ index ].z);
if(pObject->bHasTexture) {
if(pObject->pTexVerts) {
glTexCoord2f(pObject->pTexVerts[ index ].x, pObject->pTexVerts[ index ].y);
}
} else {
if(m3DModel.pMaterials.size() < pObject->materialID)
{
BYTE *pColor = m3DModel.pMaterials[pObject->materialID].color;
glColor3ub(pColor[0], pColor[1], pColor[2]);
}
}
glVertex3f(pObject->pVerts[ index ].x, pObject->pVerts[ index ].y, pObject->pVerts[ index ].z);
}
}
glEnd();
}
}를 렌더링하는 기능입니다. 왜 이렇게됩니까?
사용 된 자습서의 코드가 16 비트 숫자 somwhere를 사용하고 있는데, 오버플로하여 많은 수의 프리미티브로 손상 될 수 있습니다. – datenwolf
오, 내가 참조하십시오, 내가 큰 모델을로드 할 수있는 로더를 가질 수있는 링크를 제공 할 수있는 인터넷에있는 모든 로더가 작은 3D 모델과 비슷하고 아무 것도 작동하지 않는 것 같습니다. –
나는 그렇지 않습니다. 3DS 로더를 가지고 있습니다. 솔직히 말해서, 제 프로젝트에서이 형식을 사용하지 않기 때문입니다. 필자는 독립형 프로그램 프로젝트에서 WebGL 용 JSON과 OpenCTM 또는 독점 형식을 사용하는 경향이 있습니다. – datenwolf