だから私はOpenGLで遊んでビットマップを描いていますが、時々glRasterPosが1ピクセルずれているようです。GL_CURRENT_RASTERPOSITION を取得すると、ルーティング (フロア) がこのエラーの原因であることがわかります。たとえば、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 の値に関係しているようです。