// // main.cpp // // Created by Jorge Herrera on 3/19/12. // Copyright (c) 2012 AustralSounds. All rights reserved. // #include <iostream> #include <GLUT/GLUT.h> #include <time.h> #include <math.h> // Forward Declaraions void idleFunc(); void displayFunc(); void reshapeFunc( int width, int height ); void keyboardFunc( unsigned char, int, int ); void mouseFunc( int button, int state, int x, int y ); void specialFunc( int key, int x, int y ); void initialize(); void changeLookAt(); // globals (don't do this at home, kids!) GLsizei g_width = 600; GLsizei g_height = 480; void initialize() { glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); glShadeModel( GL_SMOOTH ); glEnable( GL_DEPTH_TEST ); glFrontFace( GL_CCW ); glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); // transparency glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); /* // lighting glEnable( GL_LIGHTING ); glLightModeli( GL_FRONT_AND_BACK, GL_TRUE ); glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE ); glEnable( GL_COLOR_MATERIAL ); */ // seed random number generator (just in case) srand( (unsigned int)time(NULL) ); } void reshapeFunc( int w, int h ) { // save the new window size g_width = (GLsizei)w; g_height = (GLsizei)h; glViewport( 0, 0, (GLsizei)w, (GLsizei)h ); // map the view port to the client area glMatrixMode( GL_PROJECTION ); glLoadIdentity( ); gluPerspective( 60.0, (GLfloat) w / (GLfloat) h, 0.1, 300.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); // place the "camera" changeLookAt(); } void keyboardFunc( unsigned char key, int x, int y ) { switch( key ) { case 'Q': case 'q': exit(1); break; } glutPostRedisplay( ); } void mouseFunc( int button, int state, int x, int y ) { if( button == GLUT_LEFT_BUTTON ) { // when left mouse button is down, move left if( state == GLUT_DOWN ) { } else { } } else if ( button == GLUT_RIGHT_BUTTON ) { // when right mouse button down, move right if( state == GLUT_DOWN ) { } else { } } else { } glutPostRedisplay( ); } void specialFunc( int key, int x, int y ) { if( key == GLUT_KEY_LEFT) { std::cout << "Left arrow"; } if( key == GLUT_KEY_RIGHT) { std::cout << "Right arrow"; } if( key == GLUT_KEY_DOWN) { std::cout << "Down arrow"; } if( key == GLUT_KEY_UP) { std::cout << "Up arrow"; } if( key == GLUT_KEY_PAGE_UP) { std::cout << "PageUp arrow"; } if( key == GLUT_KEY_PAGE_DOWN) { std::cout << "PageDown arrow"; } glutPostRedisplay( ); } void idleFunc( ) { glutPostRedisplay( ); // render the scene } void displayFunc( ) { // clear the color and depth buffers glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // set line width glLineWidth( 2.0f ); // save the current transformation glPushMatrix(); // set the view point changeLookAt(); // Draw something glPushMatrix(); glBegin( GL_TRIANGLES ); glColor4f( 1., 0., 0., 1. ); glVertex3f( -1, -1, 0 ); glColor4f( 0., 1., 0., 1. ); glVertex3f( 0, 1, 0 ); glColor4f( 0., 0., 1., 1. ); glVertex3f( 1, -1, 0 ); glEnd(); glPopMatrix(); // restore state glPopMatrix(); // flush! glFlush( ); // swap the double buffer glutSwapBuffers( ); } void changeLookAt() { gluLookAt(0, 0, 1, // eye position 0, 0, 0, // look at this point 0, 1, 0); // "up" vector } int main (int argc, char * argv[]) { // GLUT stuff glutInit( &argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize( g_width, g_height ); glutInitWindowPosition( 100, 100 ); glutCreateWindow( "Hello GL" ); glutIdleFunc( idleFunc ); glutDisplayFunc( displayFunc ); glutReshapeFunc( reshapeFunc ); glutKeyboardFunc( keyboardFunc ); glutMouseFunc( mouseFunc ); glutSpecialFunc( specialFunc ); // our own initialization initialize(); // let GLUT handle the current thread from here glutMainLoop(); return 0; }
Search This Blog
Tuesday, March 20, 2012
Basic GLUT setup
Just that (mainly as a reference for myself)
Subscribe to:
Post Comments (Atom)
Labels
bash
beamer
beck
binaural
bowie
C/C++
color
computer science
Cooking
d3.js
design
development
git
GNU
ideas
ipython notebook
latex
machine-learning
matplotlib python graphics
metaprograming
music
nature
OpenGL
OS X
palettes
presentations
programming
pypi
python
reference
ruby
ruby_on_rails
setuptools
SSH tunnel
sublime_text
theory
utilities
Vim
VST
web
XCode
Awesome post about also check it Blog! Download androdumpper apk Whatsdog apk latest version test dpc apkpure
ReplyDelete