【问题标题】:How to collapse five OpenGL textures into one?如何将五个 OpenGL 纹理合并为一个?
【发布时间】:2010-01-28 15:38:30
【问题描述】:

我想在 OpenGL ES 1.x iPhone 中将 5 个“子层”合并到一个纹理(你知道,有点像 Photoshop 中的 Flatten Image)。我是 OpenGL 新手,还没有找到答案。

【问题讨论】:

    标签: iphone opengl textures framebuffer layer


    【解决方案1】:

    假设它们一开始是图像,难道你不能将它们按顺序绘制到内存中的图像上

    code

    【讨论】:

      【解决方案2】:

      您不需要 GL 将纹理组合在一起。只需对 C 中的每个纹素进行数学运算即可。

      现在,如果您想使用 GL,您需要将 渲染到 纹理(您的最终结果)。

      这是通过OES_framebuffer_object 完成的。现在,如何绘制该纹理完全取决于您。您可以绘制 5 个四边形,每个四边形都有一个纹理,并使用混合来合并它们(但您必须指定要应用的数学),您可以使用多重纹理以更少的通道完成工作(并使用纹理环境来指定如何合并)。

      你想要什么样的展平操作?

      【讨论】:

      • 带 alpha 的简单 5 PNG。最后 2 个图像可以使用 ADD/SCREEN “混合模式”(我不知道 openGL 名称),我只需要它们中的白色组件。多纹理/纹理环境的东西听起来不错,我看到了类似的东西,但是举个例子,你可以帮我很多(谢谢你的回答)。
      • 是的,我忘了说subtextures之间没有任何偏移,我想实现一个简单的三明治。
      • openGL 不处理 PNG。您必须首先将它们作为纹理加载。 OpenGL 通过 glTexEnv 指定多纹理组合模式。是否需要纹理组合器扩展取决于您想如何组合这 5 个纹理(就像 Photoshop 中的每一层都指定它如何与之前的层组合一样)。既然你没有说,我无法回答那个具体的问题。我没有收到您的最后评论。
      • 嘿,谢谢!我看到你愿意回答我的问题。我有一个阴影层,一个带有 alpha 的 PNG 加载到一个名为 layer[0] 的纹理中。下一层 - layer[1] - 是一个简单的带有 alpha 的彩色多边形 PNG,简单的 alpha 与之前需要的混合。第 3 和第 4 是光照层 - layer[2] 和 layer[3],它们可以是带有 ADDed 混合的不透明灰度 PNG,也可以是带有 alpha 的白色 PNG,带有简单的 alpha 混合。最后两层的不透明度必须是可变的。这就是我想做的(因为我有 7 块拼图,所以在一个时间步中执行 7 次)。
      • 此处为 Flash 脚本:gotoandplay.freeblog.hu/archives/2010/01/07/…(来自第 5 段)
      猜你喜欢
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多