2013-01-04 2 views
0

Cheetah3D를 사용하여 COLLADA 파일 (.dae)을 내보내고 나서 Erik Buck의 COLLADAViewer2 (https://github.com/erikbuck/COLLADAViewer2/tree/master/COLLADAViewer2) 프로그램을 사용하여 그의 책에서 설명한대로 모델리스트 형식을 내 보냅니다.iPhone OpenGL ES 2.0 COLLADA 파일의 구형 텍스처 렌더링

내 COLLADA 파일은 지구 텍스처를 렌더링하려고하는 간단한 Sphere입니다. COLLADAViewer 프로그램에서

내 보낸 .dae 만 파일은 여기에 잘 보이는 스크린 샷입니다 :

enter image description here

구에 텍스처를 렌더링하는 데 사용 내 코드의 일부가 여기에 있습니다 :

// Setup texture 
CGImageRef imageRef = 
[[UIImage imageNamed:@"Earth.jpg"] CGImage]; 

GLKTextureInfo *textureInfoEarth = [GLKTextureLoader 
           textureWithCGImage:imageRef 
           options:[NSDictionary dictionaryWithObjectsAndKeys: 
             [NSNumber numberWithBool:YES], 
             GLKTextureLoaderOriginBottomLeft, nil] 
           error:NULL]; 

self.baseEffect.texture2d0.name = textureInfoEarth.name; 
self.baseEffect.texture2d0.target = textureInfoEarth.target; 

// Enable fragment blending with Frame Buffer contents 
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

불행하게도 시뮬레이터에서 내 구를 빌드하고 실행할 때의 XCode에서 다음과 같이 표시됩니다.

enter image description here

구체에 이상한 패턴을 설명하는 방법이 확실하지 않습니다. 텍스처가 있지만 반복되는 것과 같습니다. 아무도 내가 이것을 알아낼 수있게 도와 줄 수 있습니까? 감사합니다 -

나는 Github에 실험하고있는 xcode 프로젝트를 업로드했습니다. Buck의 OpenGL 서적에서 예제 코드를 많이 사용합니다. 텍스처가 동일한 모델의 각 삼각형 좌표처럼 https://github.com/phishstang65/renderer

+0

구가로드되고 렌더링되는 위치에 코드를 게시 할 수 있습니까? – rraallvv

+0

안녕하세요. - 내가 게시 한 프로젝트의 코드를 Github에 올리기보다는 내 게시물에 링크를 넣어 두었습니다. 정말 도움이 될만한 데 감사드립니다 - 고마워요! – PhilBot

답변

2

이 나에게 보이는 :

여기 링크입니다.

코드를 보면 정점 버퍼가 정점 당 40 바이트의 형식이고 각 값은 GLFloat 2 바이트, 위치는 3, 보통은 3, 텍스처 좌표는 2, 초는 2입니다. 텍스처 좌표 세트.

UtilityMesh 개체의 데이터를 채운 후 중단 점을 사용하여 앱을 실행했습니다. 디버거에서 데이터 덤프를 보면 40 바이트마다 반복되는 확실한 패턴이 있습니다. 위치 및 법선의 처음 24 바이트는 예상대로 변합니다. 마지막 8 바이트는 항상 0이며, 사용하지 않는 두 번째 텍스처 좌표 세트에 해당한다고 생각합니다. 문제는 기본 텍스처 좌표에 해당하는 8 바이트가 3 개의 값을 순환한다는 것입니다.

00000000 00000000 
0000003d 0000803d 
00000000 0000803d 

그래서 저는 프로그램이 정상적으로 작동한다고 생각합니다. 잘못된 데이터를 가져 오는 것입니다. 전환 과정을 확인하십시오.