アンチエイリアシング

アンチエイリアシングです。
右がアンチエイリアス無しの線で左がアンチエイリアスありの線です。
GL_LINE_SMOOTH の他に GL_POINT_SMOOTH と、
GL_POLYGON_SMOOTH があります。

 

ファイル
main.cpp

main.cpp

#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
#include <GL/freeglut/freeglut.h>

#define WIDTH 320
#define HEIGHT 240

void Line2D(int x1,int y1,int x2, int y2,float size){
 glLineWidth(size);
 glBegin(GL_LINES);
 glVertex2i(x1,y1);
 glVertex2i(x2,y2);
 glEnd();
}
void display(void)
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glColor4f(0.0f,0.0f,0.0f,1.0f);
 Line2D(120,40,300,180,1.0);//アンチエイリアスなしの線
 glEnable(GL_LINE_SMOOTH);
 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
 Line2D(20,40,200,180,1.0);//アンチエイリアスの線
 glDisable(GL_LINE_SMOOTH);
 glDisable(GL_BLEND);

 glutSwapBuffers();

}
void Init(){
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glOrtho(0, WIDTH, HEIGHT, 0, -1, 1);
}
int main(int argc, char *argv[])
{
 glutInitWindowPosition(100, 100);
 glutInitWindowSize(WIDTH, HEIGHT);
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
 glutCreateWindow("アンチエイリアス処理");
 glutDisplayFunc(display);
 Init();
 glutMainLoop();
 return 0;
}

 

最終更新:2015年03月11日 02:20
添付ファイル