google rss rss

          doneykoo [Ouditian]

          DKzone- Ouditian Technology

          Notes of Learning OpenGL Programming Guide [3]



            1 // #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
            2 
            3 #include "GL\glut.h"
            4 #include <iostream>
            5 
            6 static GLfloat fSpin = 0.0;
            7 static GLfloat fClearBlue = 0.2;
            8 static bool bRotating = false;
            9 
           10 void display(void)
           11 {
           12     // clear
           13     glClear(GL_COLOR_BUFFER_BIT);
           14 
           15     glPushMatrix();
           16     glRotatef(-fSpin, 0.00.01.0);
           17     glColor3f(1.01.01.0);
           18     glRectf(-25.0-25.025.025.0);
           19 
           20     glColor3f(1.00.00.0);
           21 
           22     glBegin(GL_POLYGON);
           23     glVertex3i(-16,    18,    0);
           24     glVertex3i(16,    18,    0);
           25     glVertex3i(16,    10,    0);
           26     glVertex3i(-16,    10,    0);
           27     glEnd();
           28 
           29     glBegin(GL_POLYGON);
           30     glVertex3i(-4,    10,    0);
           31     glVertex3i(4,    10,    0);
           32     glVertex3i(4,    5,    0);
           33     glVertex3i(-4,    5,    0);
           34     glEnd();
           35 
           36     glBegin(GL_POLYGON);
           37     glVertex3i(-20,    5,    0);
           38     glVertex3i(20,    5,    0);
           39     glVertex3i(20,    -3,    0);
           40     glVertex3i(-20,    -3,    0);
           41     glEnd();
           42 
           43     glBegin(GL_POLYGON);
           44     glVertex3i(0,    2,    0);
           45     glVertex3i(18,    -16,0);
           46     glVertex3i(13,    -21,0);
           47     glVertex3i(0,    -8,0);
           48     glEnd();
           49     
           50     glBegin(GL_POLYGON);
           51     glVertex3i(0,    2,    0);
           52     glVertex3i(-18,    -16,0);
           53     glVertex3i(-13,    -21,0);
           54     glVertex3i(0,    -8,0);
           55     glEnd();
           56 
           57     glPopMatrix();
           58 
           59     glutSwapBuffers();
           60 }
           61 
           62 void spinDisplay(void)
           63 {
           64     // change the params for displaying the squre
           65     fSpin += 0.05;
           66     if (fSpin > 360.0) {
           67         fSpin -= 360.0;
           68     }
           69     glutPostRedisplay();    
           70 }
           71 
           72 void reshape(int w, int h)
           73 {
           74     glViewport(00, (GLsizei) w, (GLsizei) h);
           75     glMatrixMode(GL_PROJECTION);
           76     glLoadIdentity();
           77     glOrtho(-50.050.0-50.050.0-1.01.0);
           78     glMatrixMode(GL_MODELVIEW);
           79     glLoadIdentity();
           80 }
           81 
           82 void mouse(int button, int state, int x, int y)
           83 {
           84     switch(button) {
           85         case GLUT_LEFT_BUTTON:
           86             // start or stop the rotating square
           87             if (state == GLUT_DOWN && !bRotating) {
           88                 bRotating = true;
           89                 glutIdleFunc(&spinDisplay);
           90             }
           91             else if (state == GLUT_DOWN && bRotating) {
           92                 bRotating = false;
           93                 glutIdleFunc(NULL);
           94                 if ((GLint)(fSpin+0.5)%90 == 0) {
           95                     fClearBlue = 1.0 - fClearBlue;
           96                     glClearColor(0.00.0, fClearBlue, 0.0);
           97                 }
           98             }
           99             break;
          100         case GLUT_RIGHT_BUTTON:
          101             break;
          102         default:
          103             break;
          104     }
          105 }
          106 
          107 void init(void)
          108 {
          109     // select the clearing color
          110     glClearColor(0.00.0, fClearBlue, 0.0);
          111 
          112     glShadeModel(GL_FLAT);
          113 }
          114 
          115 void idle(void)
          116 {
          117     if (glutGetWindow() == 0) {
          118         exit(0);
          119     }
          120 }
          121 
          122 /*
          123  * Declare display mode, window size, position, 
          124  * open a window titled,
          125  * call init routines,
          126  * register display, reshape, mouse callback function
          127  * enter main loop
          128  */
          129 int main( int argc, char * argv[] )
          130 {
          131     glutInit(&argc, argv);
          132 
          133     // GLUT_DOUBLE - double buffer
          134     glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
          135     glutInitWindowPosition(100100);
          136     glutInitWindowSize(400400);
          137     glutCreateWindow("DoNeY's first OpenGL app");
          138 
          139     init();
          140 
          141     glutDisplayFunc(&display);
          142     glutReshapeFunc(&reshape);
          143     glutMouseFunc(&mouse);
          144     glutIdleFunc(&idle);
          145     
          146     glutMainLoop();
          147     return 0;
          148 }
          149 



          posted on 2010-01-31 14:22 DoNeY 閱讀(287) 評論(0)  編輯  收藏 所屬分類: GameDev

            doneykoo blogjava
            
          主站蜘蛛池模板: 丰原市| 无为县| 娱乐| 隆化县| 中阳县| 通化县| 屏山县| 长丰县| 松桃| 蚌埠市| 华宁县| 克东县| 登封市| 宁强县| 会泽县| 迁安市| 永城市| 平南县| 治县。| 博客| 甘肃省| 会宁县| 米泉市| 都安| 玛曲县| 平果县| 江川县| 舞钢市| 郯城县| 颍上县| 天峻县| 黔西县| 黄平县| 安远县| 溧阳市| 华坪县| 昌图县| 宁德市| 永德县| 精河县| 白山市|