OpenGl ES - 如何将不同的纹理映射到图块网格

时间:2012-06-13 22:27:44

标签: java opengl-es game-engine texture-mapping basic4android

刚刚在android上学习一些OpenGL,学习制作游戏的基础知识。

我遇到的麻烦就是映射不同的纹理"每个瓷砖"在我的网格上。

例如:

我的顶点数组中有一个平铺网格 - 8x8 - 我通过定义一个9x9顶点来构造列/行来定义网格。然后我去做一个索引缓冲区告诉它如何绘制构成网格中每个方块的2个三角形。

我的沮丧在于将纹理映射到网格的不同图块,因为每个正方形与网格中的其他正方形共享顶点,据我所知,您只能在Opengl中为每个顶点应用一个纹理坐标。

我能想到的唯一解决方案是在顶点缓冲区中生成重复的顶点,这样我就可以为每个顶点分配单独的纹理坐标(即使顶点已经在前一个平铺的生成中已经在缓冲区中)。 这种方式会让我最终得到一堆重复的顶点,这些顶点在我看来似乎并不合适。我还想避免动态创建一个大位图,然后用分数纹理坐标将其映射到网格上。

有人可以教我的新手如何在网格上为每个瓷砖获取不同的纹理!

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我能想到的唯一解决方案是在顶点缓冲区中生成重复的顶点,这样我就可以为每个顶点分配单独的纹理坐标

这正是你应该做的。这可能看起来很浪费,但opengl的“顶点”是定义顶点的所有属性的集合(包括texcoords,normals等)。如果一个物理顶点位置由4个四边形共享,但该点的texcoord对于每个四边形不同,则必须创建4个唯一的顶点和索引来引用该点。