所以我在玩OpenGL和繪製位圖,看起來有時候glRasterPos被一個像素關閉。當我得到GL_CURRENT_RASTERPOSITION時,我可以看到rouding(floor)正在導致這個錯誤。例如,當我將x-pos設置爲110時,結果爲109.9998,從而導致在像素109上繪製位圖。爲什麼我無法繪製到像素110?請參閱下面的示例和輸出:OpenGL glRasterPos位置不正確
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值有關。
我有同樣的結果。 – SirRoot
沒有幫助,因爲這隻會將API更改爲接受整數。但是這些整數仍然會通過導致這些舍入錯誤的相同流水線運行(作爲浮點數)。 –