2011-08-22 127 views
3

我正在使用OpenGL ES 2.0开发一个简单的项目。它的表现相当不错,但我似乎碰到了一个对我们初学者来说看起来很差的地方。那是,我正在尝试使用纹理图集。我搜索了一下,但我似乎无法找到任何完整的代码示例。大多数搜索结果会导致人们给出关于它们是什么以及如何使用它们的基本概念,但从来没有一个我可以真正研究的完整示例。OpenGL ES 2.0中的纹理图集

此刻,我只是试图从一个图像图集中加载一组四个或五个图像,并将它们应用于单个三角形条。我可以根据需要将图像的特定部分分割出来,但我无法找到将该图像的更多部分应用于同一个三角形条的任何示例。

我不一定需要关于这个的完整教程(我不介意!),但如果有人能指点我一些类似的代码,我会很开心。非常感谢您提前!

回答

4

纹理图集与使用OpenGL加载和渲染的任何其他图像没有区别,诀窍是调整多边形每个顶点的纹理坐标以在该图像中包含较小的三角形/矩形。

在OpenGL中,图像的坐标从(0,0)开始 - 左下角,结束于(1,1) - 右上角。如果只想将图像的一个区域映射到多边形,则使用标准化大小(0.0 - 1.0)分配纹理坐标。即图像的中点将在坐标(0.5,0.5)处。

要显示仅使用图像的一半呈现一个矩形三角形带,你的纹理坐标将必须是类似:

  • (0.0,0.0)顶点在矩形的左下角
  • (0.0,1.0)在左上角顶点
  • (0.5,0.0)顶点在右下角
  • (0.5,1.0)在右上角顶点
+0

很好的答案。如果我理解正确,使用纹理图谱与以任何其他方式渲染纹理没有区别,除了我必须为每个顶点指定不同的纹理帘线,而不是简单地跨越整个纹理的帘线。精彩。我明天会更新我的游戏引擎!我期望这会大量增加渲染时间,因为我只需要几个渲染调用,而不是每个纹理渲染,因为我目前使用... – Antinous