在OpenGL ES中渲染纹理
问题描述:
我可以舒适地将场景渲染到纹理,并将纹理映射回帧缓冲以进行屏幕显示。但是如果我想将纹理映射到自身以便模糊它(例如,在新位置的四分之一不透明度处),该怎么办。那可能吗?在OpenGL ES中渲染纹理
我做它的方式就是启用质地:
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, color_tex);
,然后绘制它:
glVertexPointer(2, GL_FLOAT, 0, sv);
glTexCoordPointer(2, GL_FLOAT, 0, tcb1);
glColor4f (1.0f,1.0f,1.0f,0.25f);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
(一些代码省略,很明显)
是那个想法有什么明显的错误?我是个白痴吗?
答
不,您不能将纹理写入相同的纹理,触发未定义的行为。
但是,您可以使用称为乒乓渲染的技术,以便将操作的结果绘制到另一个纹理中,并且如果需要执行更多处理,则会将结果写入第一个纹理。
+0
你是绝对的明星。感谢您再次帮忙。 – mtrc 2010-07-14 08:01:29
你想使用FBO将纹理渲染到相同的纹理,但有一些处理? – 2010-07-13 16:23:20
本质上。再次将纹理分层,然后进行不透明度更改。 我想我可能需要将纹理写入另一个FBO,然后将其复制回来。是对的吗? – mtrc 2010-07-13 16:28:51
如果您使用的是iOS 6.0或更新的版本,则可以访问gl_LastFragData变量以读取新片段着色器通道中先前渲染的状态。它是basicalyl的“乒乓球”,但不改变2 diff渲染纹理目标。 – MoDJ 2014-05-18 19:29:08