3

ポイント スプライトを使用して、それぞれ異なるサイズの数万のポイントを表示しています。それはうまく機能し、見栄えがよく、非常に高速です。座標とサイズを含む VBO を使用しています (ポイントごとに 4 つの浮動小数点数)。

ここに私の表示コードがあります

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

4

1 に答える 1

4

はい、GL_POINT_DISTANCE_ATTENUATION パラメータで glPointParameter を使用します。

http://www.khronos.org/opengles/sdk/1.1/docs/man/glPointParameter.xml

ただし、正しく取得するのは非常に難しいです。

于 2010-08-25T09:49:26.213 に答える