0

我是 OpenGL ES 1.1(用于 IOS)纹理的新手,我在制作运动模糊效果时遇到了问题。在谷歌搜索过程中,我发现我应该在不同的时间将场景渲染为几个纹理,然后在屏幕上用不同的 alpha 值绘制所有这些纹理。但问题是我不知道如何实现这一切!所以,我的问题是:

  1. 如何在屏幕上绘制 2D 纹理?我应该制作一个正方形并将纹理放在上面吗?或者,有一种方法可以直接在屏幕上绘制纹理吗?
  2. 如何在屏幕上以不同的 alpha 值绘制多个纹理(一个接一个)?

我已经提出了一些想法,但我不确定它们是否正确。提前致谢!

4

1 回答 1

2

嗯,当然第一个建议是,在尝试做高级事情之前先了解基础知识。除此之外:

  1. 确实,要绘制全屏纹理,您只需绘制一个带纹理的屏幕大小的四边形。在这种情况下,正交投影将是一个好主意,使四边形的屏幕对齐及其适当的大小更容易。为了首先获得纹理(通过渲染到它们中),FBO可能会有所帮助,但我不确定 ES 1 设备是否支持它们,否则旧的glCopyTexSubImage2D也可以,尽管需要复制操作。

  2. 好吧,您只需一个接一个地绘制多个带纹理的四边形(参见 1)。您可以配置纹理环境以使用四边形的基色 ( glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)) 缩放纹理的颜色,并为您的四边形指定颜色(1, 1, 1, alpha)(当然应该禁用照明)。此外,您必须启用alpha 混合( glEnable(GL_BLEND)) 并使用适当的混合功能 (glBlendFunc(GL_SRC_ALPHA, GL_ONE)应该这样做)。

但是,如果所有这些术语都不能告诉您任何内容,那么您应该先使用好的学习资源来学习基础知识,然后再深入研究更高级的效果。

于 2012-03-13T08:54:49.693 回答