【发布时间】:2019-05-06 16:58:06
【问题描述】:
我想使用帧缓冲区通过着色器程序创建图像。 这很好用,除了 Y 是倒置的。 似乎左下角变成了左上角。 为什么会这样?这是正常的吗? 这是否发生在所有安卓设备上?
在我的着色器程序中gl_FragCoord 将反转 Y,这取决于我是绘制到帧缓冲区还是直接绘制到屏幕。
【问题讨论】:
-
在标准化设备空间中,左下角是 (-1, -1),右上角是 (1, 1)。视图坐标到标准化设备空间的转换取决于投影(矩阵)。你使用正交投影吗?您必须添加一些代码以使其成为Minimal, Complete, and Verifiable example。
-
我没有使用任何类型的矩阵,着色器程序将 gl_FragCoord 作为每个像素的输入。但是当绘制到帧缓冲区而不是直接绘制到屏幕时,y 会被反转。
-
使用纹理时,纹理坐标 (0, 0) 位于左下方, (1, 1) 位于右上方。见How do opengl texture coordinates work?
-
“在我的着色器程序中,gl_FragCoord 将反转 Y,这取决于我是直接绘制到帧缓冲区还是直接绘制到屏幕上。” 你怎么知道的?您是否将帧缓冲区渲染到屏幕上?
-
我使用帧缓冲区创建纹理,我将此纹理渲染到屏幕或将其保存为文件,在这两种情况下它都会被翻转。
标签: android opengl-es-2.0 framebuffer