在MacOS中模糊的Opengl像素完美渲染

时间:2014-08-24 19:02:06

标签: c++ macos opengl floating-accuracy floating-point-precision

我正在编写一个跨平台应用程序,它使用OpenGL绘制从PNG文件读取的2d图像。我的程序适用于Linux,Windows和Mac OS X. 在Linux和Windows中,它工作正常,但在Mac OS X中,图像不是像素完美的。图像看起来有点模糊,当使用鼠标移动图像时,图像会产生略微不同的模糊伪影,具体取决于绘制图像的OpenGL视口的哪个区域,即使用哪个变换矩阵。

我使用Mavericks和clang ++ 5.1。

我没有进行任何半像素移位,因为OpenGL不需要像素完美渲染。

我在想这三个平台之间的浮点计算可能有些不同,我尝试了-frounding-math和-ffloat-store编译器标志,但没有一个帮助过。

在Mac OS X上有没有其他人遇到过这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了原因。

我用鼠标移动图像,将图像的坐标设置为鼠标坐标。在Cocoa鼠标坐标到达mouseMoved:NSView的方法由于某种原因有小数部分。因此,解决方案是在使用它们在GL视口中设置图像的坐标之前舍入鼠标坐标。