【发布时间】:2016-04-14 15:56:13
【问题描述】:
我想将像素直接写入屏幕(不使用顶点和多边形)。我调查了类似问题的各种答案,其中最著名的是here 和here。
我看到有几种方法可以将像素绘制到屏幕上,但它们似乎都是间接的并且使用了不必要的浮点运算:
为屏幕上的每个像素画一个
GL_POINT。我已经尝试过了,它可以工作,但这似乎是一种将像素绘制到屏幕上的低效方式。当我的数据要被转换成像素数据数组时,为什么要把它写成浮点数呢。创建一个横跨整个屏幕的二维四边形并向其写入纹理。与第一个选项一样,这似乎是一种将像素放在屏幕上的迂回方式。纹理在被放到屏幕上之前仍然需要经过光栅化。纹理也必须是方形的,而且大多数屏幕不是方形的,所以我必须处理这个问题。
如何使用 OpenGL 以最直接和最有效的方式将颜色矩阵(其中pixels[0][0] 对应于左上角,pixels[1920][1080] 对应于右下角)显示在屏幕上?
直接写入帧缓冲区似乎是最有希望的选择,但我只见过有人使用帧缓冲区进行着色。
【问题讨论】:
-
"纹理也必须是方形的" 从什么时候开始的?纹理从未必须是方形的。即使它们被限制为二维的幂,宽度和高度也不必相同。
-
如果您不需要3D渲染本身,您可以使用SDL:stackoverflow.com/a/36504803/895245
标签: opengl image-processing graphics drawing pixels