我正在研究在多個平臺上運行的C#/ OpenGL代碼庫:通過MonoTouch的iOS/OpenGL ES 2.0,通過OpenTK的Windows/OpenGL以及其他平臺。當使用GL_POINTS時,gl_Position設置矩形的中心嗎?
當從四邊形切換到GL_POINTS
渲染時,我注意到我正在繪製的矩形在iOS上以偏移量呈現。
看來,在Windows上,gl_Position
定義了要繪製的矩形的中心。這是我期待的行爲。
在iOS/OpenGL ES 2.0/MonoTouch上,gl_Position
似乎設置矩形的左上角。
我花了幾個小時試圖找出原因,因爲當然,我認爲這是由我的代碼中的錯誤引起的。
但在此之前我失去了更多時間:使用GL_POINTS
時,gl_Position
究竟是什麼定義的?矩形的中心或角落?
我爲'gl_PointSize'使用了相當大的值,其中一些超過了100個像素。我要進一步調查,很可能我會回到使用四邊形。 – cheeesus
這對於很多實現來說不起作用。您可以通過這種方式查詢點大小範圍:'GLfloat point_min_max [2]; glGetFloatv(GL_POINT_SIZE_RANGE,point_min_max);'。最小大小爲'point_min_max [0]',最大值爲'point_min_max [1]'。大多數實現將支持** 1.0 **作爲最小值,最大值爲** 63.5 **,但OpenGL僅需要實現才能支持完全** 1.0 **。 –