GLUT-ikkuna

theril 27.01.02 03:44

Pohja käytettäväksi OpenGL/GLUT -ohjelmissa.

 Tekstiversio  Arvo: 3 (3 ääntä)  Äänestä: +  -
//Luo tuplabufferoidun Glut ikkunan.
//ESC sulkee ohjelman, f menee fullscreeniin ja F palaa tavalliseen.
//Muista Linkittää Glut!


#ifdef WINDOWS
#include <windows.h>    //Koita säilyttää portattavuus
#endif

#include <GL/glut.h>

//Purkkaviritys ikkunan koon säilyttämiseksi liikuttaessa
//fullscreen modeen ja takaisin
int gWinwidth = 640;
int gWinheight = 480;
unsigned char gFullscreen = 0;

void resize(GLsizei width, GLsizei height){
        if(!gFullscreen){
                gWinwidth = width;
                gWinheight = height;
        }
       
        glViewport(0, 0, width, height);
       
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0, (GLdouble)width/(GLdouble)height, 0.1, 100.0);
       
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}

void init(void){
        glClearColor(0.0,0.0,0.0,0.0);
        glShadeModel(GL_SMOOTH);
       
        glClearDepth(1.0);
        glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LEQUAL);
       
        glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}

void display(void){
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        //Piirtorutiinit tähän
        glutSwapBuffers();
}


void keyboard(unsigned char key, int x, int y){
        switch(key){
                case 27: //ESC
                        exit(0);
                break;
                case 'f':
                        gFullscreen = 1;
                        glutFullScreen();
                break;
                case 'F':
                        gFullscreen = 0;
                        glutReshapeWindow(gWinwidth, gWinheight);
                break;
        }
}

int main (int argc, char* argv[]){
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
        glutInitWindowSize(gWinwidth, gWinheight);
        glutCreateWindow(argv[0]);
        init();
        glutDisplayFunc(display);
        glutKeyboardFunc(keyboard);
        glutReshapeFunc(resize);
        glutMainLoop();

        return 0;
}

editoitu: 15:40 23.4.05
stWasm1.0 11:38 20.4.05 
Melkein suora kopio
http://www.opengl.org/resources/code/basics/samples/accum.c

edit-> tosin teit muutaman kivan lisäyksen, joten plussa tulee.