我要绘制两次相同的纹理;一个在另一个之上。放大第二个纹理,以创建画中画效果。 我正在使用相同的顶点和片段着色器,以及对它们的相同引用。
使用glEnable(GL_BLEND)
,输出看起来像(不希望的):
对于glDisable(GL_BLEND)
,输出看起来像这样(期望):
但是,在执行glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buf);
时,使用glDisable(GL_BLEND)
会得到一个全黑的图像,并且在图像的边缘有一些随机笔触(加上时间戳的效果很好)。
编辑1:我得到的输出是: 注意,我将字节缓冲区转换为位图,然后转换为jpeg。
为什么glReadPixels
会返回黑色输出,我该如何解决?
编辑2:
好吧,即使使用显示功能的glEnable(GL_BLEND)
设置GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ZERO);
来显示所需的输出,我在glReadPixels
上也得到了相同的黑/空白输出。这意味着这可能与混合没有任何关系,但可能是我使用同一程序(片段+顶点)将两者相互绘制的事实。在这一点上一无所知。