渲染复古 2D 像素图形时,通常使用较低的内部分辨率进行像素化,并将输出缩放到较大的分辨率展示。然而,缩放 GL_LINE_LOOP 基元可能会导致非像素化线条。
OpenGL 的 glOrtho 函数定义了一个 2D 坐标系,其中原点位于左下角并延伸到右上角。通过调用 glOrtho(0, 320, 240, 0, 0, 1),你定义了一个 320x240 的虚拟画布。
但是,当使用 glViewport 函数缩放输出时,虚拟画布并没有物理上调整大小。相反,基元是在完整输出分辨率(例如 960x720)上绘制的,然后按比例放大。这会产生像素化的矩形,但非像素化的线条。
建议的解决方案是渲染到所需虚拟分辨率(在本例中为 320x240)的纹理,然后绘制该纹理以所需的输出分辨率 (960x720) 到窗口。这可确保图元以虚拟分辨率渲染,并保持其像素化外观。
这种方法可确保以虚拟分辨率绘制线条,即使放大到更高的分辨率也能保持其像素化外观输出分辨率。
以上是在 OpenGL 中缩放时如何实现像素化线条?的详细内容。更多信息请关注PHP中文网其他相关文章!