【发布时间】:2012-02-14 01:34:55
【问题描述】:
我遇到了一个我无法解决的奇怪问题,想知道是否有人以前见过这个问题。基本上我可以让我的搅拌机模型显示纹理,但它不能正确映射纹理。我已经制作了最简单的模型,这就是我得到的:
我无法发布图片,所以这里有一个来自 picasaweb 的链接, https://picasaweb.google.com/112176813871298741669/January192012?authuser=0&feat=directlink
我正在使用 cocos2d 并在 CCSprite 绘制方法中绘制纹理,如下所示:
glBindTexture(GL_TEXTURE_2D, self.texture.name);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(vertexDataTextured), &MeshVertexData[0].vertex);
glTexCoordPointer(2, GL_FLOAT, 0, &MeshVertexData[0].texCoord2);
纹理在 init 方法中作为 CCTexture2D 加载。
有人有什么想法吗?很确定它的纹理坐标,但无法解决,它们看起来是正确的,请参阅此处获取数据:
{/*v:*/{1.000000, -0.000000, -1.000000}, /*n:*/{0.000000, 0.999969, 0.000000}, /*t:*/{0.000000, 0.000000}},
{/*v:*/{-1.000000, -0.000000, -1.000000}, /*n:*/{0.000000, 1.000000, 0.000000}, /*t:*/{1.000000, 0.000000}},
{/*v:*/{-1.000000, 0.000000, 1.000000}, /*n:*/{0.000000, 1.000000, 0.000000}, /*t:*/{1.000000, 1.000000}},
{/*v:*/{1.000000, -0.000000, -1.000000}, /*n:*/{0.000000, 0.999969, 0.000000}, /*t:*/{0.000000, 0.000000}},
{/*v:*/{-1.000000, 0.000000, 1.000000}, /*n:*/{0.000000, 1.000000, 0.000000}, /*t:*/{1.000000, 1.000000}},
{/*v:*/{1.000000, 0.000000, 1.000000}, /*n:*/{0.000000, 1.000000, 0.000000}, /*t:*/{0.000000, 1.000000}},
所以纹理坐标是:
0.000000, 0.000000
1.000000, 0.000000
1.000000, 1.000000
0.000000, 0.000000
1.000000, 1.000000
0.000000, 1.000000
但仔细观察图像,我不能 100% 确定它是坐标,可能与 openGL 参数有关....
【问题讨论】:
-
如果我正确理解你的结构而不是
glTexCoordPointer(2, GL_FLOAT, sizeof(vertexDataTextured), &MeshVertexData[0].texCoord2);,因为每个顶点之间的空间与每个 tex-coord 值之间的空间相同 -
该死的......这很容易:),谢谢,显然太累了......
标签: opengl-es cocos2d-iphone blender