所以我在玩 OpenGL 并绘制位图,有时 glRasterPos 似乎偏离了一个像素。当我得到 GL_CURRENT_RASTERPOSITION 时,我可以看到 roding (floor) 导致了这个错误。例如,当我将 x-pos 设置为 110 时,它会导致 109.9998 导致位图绘制在像素 109 上。任何想法为什么我不能绘制到像素 110?请参阅下面的示例和输出:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 800, 800, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(0, 0, 800, 800);
glRasterPos2f (100.0, 12);
glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
printf("%f\n",pos[0]);
glRasterPos2f (110.0, 30.0);
glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
printf("%f\n",pos[0]);
glRasterPos2f (111.0, 45);
glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
printf("%f\n",pos[0]);
Console Output:
100.000000
109.999992
111.000015
更新:这似乎与我正在使用的 Ortho2D 和 glViewport 值有关。