2010-08-25 18 views
3

我使用點精靈來顯示幾萬個點,每個點都有不同的大小。它運作良好,看起來很棒,而且速度很快。我正在使用一個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

+1

與問題無關,但'glDisableClientState(GL_POINT_SPRITE_OES)'看起來不正確 – Bahbar 2010-08-25 09:42:29

+0

thx。 (似乎沒有做任何事情) – hanno 2010-08-25 11:17:05

+0

@Bahbar +1,@hanno查看http://www.khronos.org/opengles/documentation/opengles1_0/html/glEnableClientState.html查看可能的值。 – Calvin1602 2010-08-25 14:44:29

回答