我正在对 2D 纹理使用离屏渲染。我的第一个着色器将输出 YUV 值,第二个片段着色器从屏幕外纹理读取 YUV。在第二个着色器中,我操纵 U 和 V 并将其设置在 -0.5 到 0.5 之间。但是一旦我尝试渲染它,这些就会被限制在 0 到 1(正)。我所有的负值都变成了 0。
发现问题在这里:
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA,
width, height, 0, GLES20.GL_RGBA,
GLES20.GL_UNSIGNED_BYTE, null)
如果我使用 GL_FLOAT 而不是 GL_UNSIGNED_BYTE,它会给我错误,因为颜色格式不匹配。从链接中,https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml看起来所有支持的格式都将限制在 0-1 范围内。如何在下一个纹理中也获得负值。
发现我可以使用其他图像格式,如 GL_R16F,但 GLES20 中的链接 / 都不支持它们。