【问题标题】:OpenGl ES - How to map different textures to a grid of tilesOpenGL ES - 如何将不同的纹理映射到瓷砖网格
【发布时间】:2012-06-13 22:27:44
【问题描述】:

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

我遇到的麻烦是将“每个图块”的不同纹理映射到我的网格上。

例如:

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

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

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

有人可以指导我的新手如何在网格上为每个图块获取不同的纹理!

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的澄清!他们如何处理大型地形网格的纹理?
    • 好吧,我敢打赌,这个问题的完整答案可能会写满整本教科书,但请注意,重复只是位于纹理边界上的顶点的问题。如果你有一个很大的精细镶嵌网格,那么纹理之间实际共享的顶点数量相对于顶点的总数来说是非常小的,所以重复并不像你在绘图时看起来那么大四边形(每个顶点必须复制 4 倍)。 @user1411499
    猜你喜欢
    • 2011-08-09
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多