iPhone OpenGL ES 2.0奇怪图案从COLLADA文件在球体上渲染纹理

iPhone OpenGL ES 2.0奇怪图案从COLLADA文件在球体上渲染纹理,iphone,objective-c,cocoa,opengl-es,collada,Iphone,Objective C,Cocoa,Opengl Es,Collada,我使用Cheetah3D导出COLLADA文件(.dae),然后使用Erik Buck的COLLADAViewer2()程序导出modelplist格式,如他的书中所述 我的COLLADA文件是一个简单的球体,我试图在其上渲染地球纹理 在COLLADAViewer程序中,我导出的.dae文件看起来不错,下面是一个屏幕截图: 我的代码中用于在球体上渲染纹理的部分如下所示: // Setup texture CGImageRef imageRef = [[UIImage imageNamed:@"

我使用Cheetah3D导出COLLADA文件(.dae),然后使用Erik Buck的COLLADAViewer2()程序导出modelplist格式,如他的书中所述

我的COLLADA文件是一个简单的球体,我试图在其上渲染地球纹理

在COLLADAViewer程序中,我导出的.dae文件看起来不错,下面是一个屏幕截图:

我的代码中用于在球体上渲染纹理的部分如下所示:

// 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中,当我构建并运行球体时,在模拟器上看起来是这样的:

我不知道如何解释球体上的奇怪图案,就像纹理在那里,但在重复。有人能帮我弄清楚吗?谢谢-

我将正在试验的xcode项目上传到Github。它使用了巴克先生的OpenGL书中的大量示例代码

以下是链接:

在我看来,模型中每个三角形的纹理坐标都是相同的

看看你的代码,我认为你的顶点缓冲区的格式是每个顶点40个字节,每个值是两个字节的
GLFloat
,3个表示位置,3个表示法线,2个表示纹理坐标,2个表示第二组纹理坐标

我运行了这个应用程序,在它填充
UtilityMesh
对象中的数据后有一个断点。将其视为调试器中的数据转储,有一个明确的模式每40个字节重复一次。位置和法线的前24个字节按预期变化。最后八个字节总是0,我认为这对应于未使用的第二组纹理坐标。问题在于,与主纹理坐标对应的八个字节在三个值之间循环

00000000 00000000 
0000003d 0000803d 
00000000 0000803d

所以我认为你的程序很好,只是得到了坏数据。检查你的转换过程。

你能在球体加载和渲染的地方发布代码吗?您好,我没有发布大量代码,而是将相关项目上传到Github,而是将链接放在我的帖子中。我真的很感谢你的帮助-谢谢!