gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:58:09 24 4
gpt4 key购买 nike

我使用 Cheetah3D 导出​​ COLLADA 文件 ( .dae ),然后使用 Erik Buck 的 COLLADAViewer2 ( https://github.com/erikbuck/COLLADAViewer2/tree/master/COLLADAViewer2 ) 程序导出 modelplist 格式,如他的书中所述。

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

在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

我不知道如何解释球体上的奇怪图案,就像纹理在那里但被重复一样。谁能帮我解决这个问题吗?谢谢-

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

这是链接: https://github.com/phishstang65/renderer

最佳答案

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

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

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

00000000 00000000 
0000003d 0000803d
00000000 0000803d

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

关于iPhone OpenGL ES 2.0 奇怪的图案在 COLLADA 文件中渲染球体纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com