最終更新: mikk_ni3_92 2008年09月17日(水) 12:17:47履歴
現在地 >> メニュー >> 基本編11 >> ブレンド処理 >> ブレンド処理::まとめコード
#include <GL/glut.h> /********** プロトタイプ宣言 ************/ void display(); void reshape(int w, int h); /*********** OpenGLの初期設定 ************/ void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(300,300); glutCreateWindow("Blending"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); } void MY_INIT() { glClearColor(1, 1, 0, 1.0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DEPTH_TEST); } /********[メイン関数]********/ int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); MY_INIT(); glutMainLoop(); return 0; } /********[ここからコールバック]****************************************/ void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_BLEND); //ブレンド有効化 glPushMatrix(); glColor4f(1,0,0,0.5); glTranslatef(0,0,-1); glRectf(-1,1,1,-1); //ポリゴン1枚目(奥) glPopMatrix(); glColor4f(0,0,1,0.5); glRectf(-1,1,1,-1); //ポリゴン2枚目(手前) glDisable(GL_BLEND); //ブレンド無効化 glutSwapBuffers(); glColor3f(1,1,1); } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); //行列モード切替 glLoadIdentity(); //行列初期化 gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); //行列モード切替 glLoadIdentity(); gluLookAt(2.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); }