私はいくつかの OpenGL の基礎を学んでおり、パーティクル システムを作成することにしたとき、いくつかの問題に遭遇しました。GL_POINT_SPRITE で GL_POINT をレンダリングしようとすると、最初にレンダラーでない限り画面に表示されません。レンダリングに使用しているコード:
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3f(1.0f,1.0f,1.0f);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, t->id());
glBegin(GL_QUADS);
glTexCoord2f(0.0f,0.0f);
glVertex2f(10,10);
glTexCoord2f(1.0f,0.0f);
glVertex2f(100,10);
glTexCoord2f(1.0f,1.0f);
glVertex2f(100,100);
glTexCoord2f(0.0f,1.0f);
glVertex2f(10,100);
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
glPushMatrix();
glColor3f(1.0f,1.0f,1.0f);
glEnable(GL_TEXTURE_2D);
glEnable(GL_POINT_SPRITE_ARB);
glBindTexture(GL_TEXTURE_2D, t->id());
glTexEnvf(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
glPointSize(32);
glBegin(GL_POINTS);
glVertex2f(300,300);
glEnd();
glDisable(GL_POINT_SPRITE);
glDisable(GL_TEXTURE_2D);
glPopMatrix();
SDL_GL_SwapBuffers();
これはテクスチャ付きのクワッドのみをレンダリングし、ポイントはレンダリングしません。順序を変更すると (最初のレンダー ポイント、次にクワッド)、両方が画面に表示されます (テクスチャ ポイントとテクスチャ クワッド)。
ここで何か間違ったことをしていますか、それともこれは正しい動作ですか?
私の PC に関する情報が役立つかもしれません - AMD Mobility Radeon HD 4550 を搭載した Arch Linux 64 ビット (Catalyst 12.6 ドライバー)