1. 程式人生 > >我的第一個OpenGL 程式

我的第一個OpenGL 程式


//

//  main.c

//  opengl

//

//  Created bych_soft on 12-1-11.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//

#include<stdio.h>

#include<stdlib.h>

#include<GLUT/glut.h>

//#include "GL/glut.h"

// #include<GL/glut.h>

void display()

{

glClear(GL_COLOR_BUFFER_BIT); // 清屏

    glColor4f

(0.0, 1.0, 0.0, 0.5);// 繪製矩形

    glRectf(0.1, 0.1, 0.6, 0.6);

    glColor4f(1.0, 1.0, 0.0, 0.7);// 繪製矩形

    glRectf(0.4, 0.3, 0.9, 0.8);

glFlush(); // 強制繪圖完成

}

void init()

{

    glEnable (GL_BLEND);    // 啟用融合

glBlendFunc (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);//產生融合因子

glShadeModel (GL_FLAT);// 設定平面明暗處理

    glClearColor (0.0

, 0.0, 0.0, 0.0);// 清屏

}

void reshape (int w,int h)

{

    glViewport (0, 0, (GLsizei) w, (GLsizei) h);

glMatrixMode (GL_PROJECTION);

glLoadIdentity();

    if (w <= h)

        glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,

                 1.5*(GLfloat)h/(GLfloat)w, -10.0,10.0);

    else

        glOrtho

(-1.5*(GLfloat)w/(GLfloat)h,

                 1.5*(GLfloat)w/(GLfloat)h, -1.5,1.5, -10.0,10.0);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

void keyboard(unsignedchar key, int x,int y)

{

    switch (key) {

        case 27:

            exit(0);

            break;

    }

}

int main(int argc,char** argv)

{

    glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE |GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize (500,500); 

glutInitWindowPosition (100,100);

glutCreateWindow (argv[0]);

    init ();

glutDisplayFunc(display); 

glutReshapeFunc(reshape);

glutKeyboardFunc(keyboard);

glutMainLoop();

    return 0;

}