OpenGL 2D像素完美渲染

时间:2013-12-21 15:04:11

标签: c++ opengl textures 2d rendering

我正在尝试渲染2D图像,使其完全覆盖整个窗口 对于我的测试,我设置了一个窗口,使客户区域正好是320x240,纹理也是这个尺寸 我为以原点为中心的1x1x1立方体设置了正投影,并将我的视口设置为0,0,320,240
纹理映射到以原点为中心的1x1大小的四边形 着色器是一个简单的着色器,用于执行Proj ModelView Pos

我创建了一个测试纹理,可以让我验证渲染效果,并且看到一个我无法动摇的一致差异。
Calibration image

渲染的结果始终是一些拉伸,将一些像素放在窗口的右上方,并且看起来总是相同的量,无论窗口大小(相同的像素数量) ,如果我用另一个值替换320x240)
enter image description here

我认为它与窗口装饰宽度有关,但我不确定如何修复它以使解决方案不是平台/机器特定的。

编辑:
代码是使用freeglut和glew的直接C ++
确认如果我调用glutFullScreen就不会发生这种情况,所以它肯定与窗口模式相关。

1 个答案:

答案 0 :(得分:3)

  

注意:在添加语言标记之前已经回答了这个问题

不确定您使用的是哪个模块。 如果您使用的是Pyglet,最简单的方法就是:

import pyglet

width = 320
height = 240
window = pyglet.window.Window(width, height)
image = pyglet.resource.image('image.png')

@window.event
def on_draw():
    window.clear()
    image.blit(0, 0, 0, width, height)

pyglet.app.run()

您可以在此处找到有关此内容的更多信息: http://www.pyglet.org/doc/programming_guide/size_and_position.html http://www.pyglet.org/doc/programming_guide/displaying_images.html