我是OpenGL ES 1.1(适用于IOS)纹理的新手,在制作运动模糊效果方面遇到了问题。在谷歌搜索过程中,我发现我应该将不同时刻的场景渲染为几个纹理,然后在屏幕上用不同的alpha值绘制所有这些纹理。但问题是,我不知道如何实现这一切!所以,我的问题是:
- 如何在屏幕上绘制2D纹理?我应该做一个正方形并在上面涂上我的纹理吗?或者,有没有一种方法可以直接在屏幕上绘制纹理
- 如何在屏幕上绘制具有不同alpha值的多个纹理(一个接一个)
我已经提出了一些想法,但我不确定它们是否正确。提前感谢!
当然,第一条建议是,在尝试做高级工作之前,先了解基础知识。除此之外:
-
的确,要绘制全屏纹理,只需绘制一个有纹理的屏幕大小的四边形即可。在这种情况下,正交投影是一个好主意,可以使四边形的屏幕对齐及其适当的大小更容易。对于首先获得纹理(通过渲染到纹理中),FBO可能会有所帮助,但我不确定ES 1设备是否支持它们,否则旧的
glCopyTexSubImage2D
也可以,尽管需要复制操作。 -
好吧,您只需绘制多个纹理四边形(请参见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)
应该这样做)。
但是,如果所有这些术语都没有告诉你什么,你应该首先使用良好的学习资源学习基础知识,然后再深入研究更高级的效果。