我正在编写一个跨平台应用程序,它使用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上有没有其他人遇到过这个问题?
答案 0 :(得分:0)
我找到了原因。
我用鼠标移动图像,将图像的坐标设置为鼠标坐标。在Cocoa鼠标坐标到达mouseMoved:NSView的方法由于某种原因有小数部分。因此,解决方案是在使用它们在GL视口中设置图像的坐标之前舍入鼠标坐标。