私は次のものを持っています:
glHint(GL_POINT_SMOOTH, GL_NICEST);
glEnable(GL_POINT_SMOOTH);
問題は、ピクセルを描画しようとしたときです。
DrawPoints(float x1,float y1)
{
glBlendFunc(GL_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA);
glPointSize(1);
glBegin(GL_POINTS);
glVertex2f(x1, y1);
glEnd();
}
画面上に幅 2 ピクセル、高さ 2 ピクセルの点が表示されます。2 ピクセル幅のピクセルは、最後x1
に a を付けて呼び出されるようにすることで解決され.5
ました。y1
変数の末尾を強制しても、高さの問題は解決.5
しませんでした。ポイントは、1 つだけに設定されているにもかかわらず、常に 2 ピクセルの高さです。
どうすればこれを解決できますか?
編集:
問題のスクリーンショットを撮りました。画面に正弦波を描いています。
編集2:
完全な初期化コードは次のとおりです。
if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
fprintf(stderr,"%s:%d\n SDL_Init call failed.\n",__FILE__,__LINE__);
return false;
}
if((Surf_Display = SDL_SetVideoMode(WWIDTH, WHEIGHT, 32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL)) == NULL) {
fprintf(stderr,"%s:%d\n SDL_SetVideoMode call failed.\n",__FILE__,__LINE__);
return false;
}
// Init GL system
glClearColor(0, 0, 0, 1);
glClearDepth(1.0f);
glViewport(0, 0, WWIDTH, WHEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, WWIDTH, WHEIGHT, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glHint(GL_POINT_SMOOTH, GL_NICEST);
glHint(GL_LINE_SMOOTH, GL_NICEST);
glHint(GL_POLYGON_SMOOTH, GL_NICEST);
glEnable(GL_POINT_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
glLoadIdentity();
が呼び出されたことを確認しglEnable(GL_BLEND);
ても役に立ちませんでした。
別の注意として、呼び出しSDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2);
はピクセルの高さにも影響しませんでした。