gpt4 book ai didi

c - 使用 OpenGL 进行像素完美的 2D 渲染

转载 作者:太空狗 更新时间:2023-10-29 15:24:38 26 4
gpt4 key购买 nike

是否可以设置一个 OpenGL 场景来实现像素完美渲染和像素 block 传输?我注意到通过以下方式设置场景:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, width, height, 0.0, 0.0, 1.0);

然后使用以下方法绘制一个像素:

glBegin(GL_POINTS);
glVertex2i(0, 0);
glEnd();

是否始终将其绘制在每个硬件配置的左上角像素上(有时它在左侧一个像素,或在左上角下方一个像素)。我意识到这可能是由于图形驱动程序对 OpenGL 的不同实现,但是有没有办法使左上角的像素为 (0,0),右下角的像素为 (width-1, height-1 )始终如一?这似乎很奇怪,这是没有标准化的东西......

我见过一些使用 (0.375, 0.375) 或 (0.5, 0.5) 翻译的“hacks”,但这似乎也解决了某些配置的问题,而不是其他配置。

最佳答案

编辑:该死,这是一个翻译。已更新。

您还必须考虑像素也有尺寸。这就是“翻译技巧”的目的。如果最左边的像素应该有一个中心坐标0.0,那么它的左边界在-0.5——这就是裁剪平面应该在的地方.类似地,如果最右边的像素应该有一个中心坐标width - 1,那么它的右边界是(width - 1) + 0.5 - - 这就是裁剪平面应该位于的位置。

所以尝试:

glOrtho(-0.5, (width - 1) + 0.5, (height - 1) + 0.5, -0.5, 0.0, 1.0);

这就是翻译的来源。

关于c - 使用 OpenGL 进行像素完美的 2D 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com