我使用點精靈來顯示幾萬個點,每個點都有不同的大小。它運作良好,看起來很棒,而且速度很快。我正在使用一個VBO的座標和大小(每點4浮點數)。glPointSizePointerOES和glScalef
這裏是我的代碼顯示
glEnable(GL_POINT_SPRITE_OES);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, pointTexture);
glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, GL_TRUE);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, pointVertices);
glVertexPointer(3, GL_FLOAT, 4*sizeof(float), 0);
glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
glPointSizePointerOES(GL_FLOAT,4*sizeof(float),(GLvoid*) (sizeof(GL_FLOAT)*3));
glDrawArrays(GL_POINTS, 0, pointNum);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
glDisableClientState(GL_VERTEX_ARRAY);
glDisable(GL_TEXTURE_2D);
glDisable(GL_POINT_SPRITE_OES);
現在,我也想能夠放大,即使用glScalef
。是否可以在不更新VBO的情況下相應地更改點的大小? glPointSize
沒有任何影響,因爲我使用的是GL_POINT_SIZE_ARRAY_OES
。
與問題無關,但'glDisableClientState(GL_POINT_SPRITE_OES)'看起來不正確 – Bahbar 2010-08-25 09:42:29
thx。 (似乎沒有做任何事情) – hanno 2010-08-25 11:17:05
@Bahbar +1,@hanno查看http://www.khronos.org/opengles/documentation/opengles1_0/html/glEnableClientState.html查看可能的值。 – Calvin1602 2010-08-25 14:44:29