Skip to content

Instantly share code, notes, and snippets.

@jl2
Created June 5, 2013 23:35
Show Gist options
  • Select an option

  • Save jl2/5718174 to your computer and use it in GitHub Desktop.

Select an option

Save jl2/5718174 to your computer and use it in GitHub Desktop.
Simple GLUT sample code
PROJECT(Basic CXX)
set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -O3")
cmake_minimum_required(VERSION 2.6)
ADD_EXECUTABLE(Basic main.cpp)
TARGET_LINK_LIBRARIES(Basic freeglut opengl32 glu32)
#include <iostream>
#include <cstdlib>
#include <GL/glut.h>
GLfloat spin=0.0;
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(spin,0.0,0.0,1.0);
glColor3f(0.0,1.0,0.0);
glRectf(-25.0,0.0,25.0,25.0);
glColor3f(0.0,0.0,1.0);
glRectf(-25.0,50.0,25.0,75.0);
glColor3f(1.0,0.0,0.0);
glRectf(-25.0,-50.0,25.0,-25.0);
glPopMatrix();
glutSwapBuffers();
}
void spinDisplay(void)
{
spin=spin+1.0;
if(spin>360.0) spin=spin-360.0;
glutPostRedisplay();
}
void reshape(int w, int h)
{
glViewport(0,0,(GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0,50.0,0.0,100.0,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void mouse(int button,int state,int x,int y)
{
switch(button)
{
case GLUT_LEFT_BUTTON:
if (state==GLUT_DOWN) glutIdleFunc(spinDisplay); break;
case GLUT_RIGHT_BUTTON: if (state==GLUT_DOWN) glutIdleFunc(NULL); break;
}
}
void keyboard(unsigned char key, int x, int y) {
if (key == 27) { std::exit(0); }
if (key == 'g') { glutIdleFunc(spinDisplay); return; }
if (key == 's') { glutIdleFunc(0); return; }
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(250,250);
glutInitWindowPosition(100,100);
glutCreateWindow("FreeGLUT Test!");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment