Skip to content
Snippets Groups Projects
framework.cpp 2.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • Cseh Viktor's avatar
    Cseh Viktor committed
    //=============================================================================================
    // Collection of classes from lecture slides.
    // Framework for assignments. Valid from 2019.
    // Do not change it if you want to submit a homework.
    //=============================================================================================
    #include "framework.h"
    
    // Initialization
    void onInitialization();
    
    // Window has become invalid: Redraw
    void onDisplay();
    
    // Key of ASCII code pressed
    void onKeyboard(unsigned char key, int pX, int pY);
    
    // Key of ASCII code released
    void onKeyboardUp(unsigned char key, int pX, int pY);
    
    // Move mouse with key pressed
    void onMouseMotion(int pX, int pY);
    
    // Mouse click event
    void onMouse(int button, int state, int pX, int pY);
    
    // Idle event indicating that some time elapsed: do animation here
    void onIdle();
    
    // Entry point of the application
    int main(int argc, char * argv[]) {
    	// Initialize GLUT, Glew and OpenGL 
    	glutInit(&argc, argv);
    
    	// OpenGL major and minor versions
    	int majorVersion = 3, minorVersion = 3;
    #if !defined(__APPLE__)
    	glutInitContextVersion(majorVersion, minorVersion);
    #endif
    	glutInitWindowSize(windowWidth, windowHeight);				// Application window is initially of resolution 600x600
    	glutInitWindowPosition(100, 100);							// Relative location of the application window
    #if defined(__APPLE__)
    	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_3_2_CORE_PROFILE);  // 8 bit R,G,B,A + double buffer + depth buffer
    #else
    	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    #endif
    	glutCreateWindow(argv[0]);
    
    #if !defined(__APPLE__)
    	glewExperimental = true;	// magic
    	glewInit();
    #endif
    	printf("GL Vendor    : %s\n", glGetString(GL_VENDOR));
    	printf("GL Renderer  : %s\n", glGetString(GL_RENDERER));
    	printf("GL Version (string)  : %s\n", glGetString(GL_VERSION));
    	glGetIntegerv(GL_MAJOR_VERSION, &majorVersion);
    	glGetIntegerv(GL_MINOR_VERSION, &minorVersion);
    	printf("GL Version (integer) : %d.%d\n", majorVersion, minorVersion);
    	printf("GLSL Version : %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
    
    	// Initialize this program and create shaders
    	onInitialization();
    
    	glutDisplayFunc(onDisplay);                // Register event handlers
    	glutMouseFunc(onMouse);
    	glutIdleFunc(onIdle);
    	glutKeyboardFunc(onKeyboard);
    	glutKeyboardUpFunc(onKeyboardUp);
    	glutMotionFunc(onMouseMotion);
    
    	glutMainLoop();
    	return 1;
    }