While GLUT is well-suited to learning OpenGL and developing simple OpenGL applications, GLUT is not a full-featured toolkit so large applications requiring sophisticated user interfaces are better off using native window system toolkits. Quoting from the : "GLUT is designed for constructing small to medium sized OpenGL programs.
GLUT is platform independent, which is built on top of platform-specific OpenGL extension such as GLX for X Window System, WGL for Microsoft Window, and AGL, CGL or Cocoa for Mac OS. GLUT commands start with a prefix of " glut" (e.g., glutCreatewindow, glutMouseFunc). GLUT is needed to interact with the Operating System (such as creating a window, handling key and mouse inputs) it also provides more building models (such as sphere and torus). OpenGL Utilities Toolkit (GLUT): OpenGL is designed to be independent of the windowing system or operating system.GLU commands start with a prefix " glu" (e.g., gluLookAt, gluPerspective). OpenGL Utility Library (GLU): built on-top of the core OpenGL to provide important utilities (such as setting camera view and projection) and more building models (such as qradric surfaces and polygon tessellation).The Core OpenGL models an object via a set of geometric primitives such as point, line and polygon. Core OpenGL (GL): consists of hundreds of commands, which begin with a prefix " gl" (e.g., glColor, glVertex, glTranslate, glRotate).We use 3 sets of libraries in our OpenGL programs: In other words, OpenGL graphic rendering commands issued by your applications could be directed to the graphic hardware and accelerated.
OpenGL is the software interface to graphics hardware. Modern computers have dedicated GPU (Graphics Processing Unit) with its own memory to speed up graphics rendering. OpenGL (Open Graphics Library) is a cross-platform, hardware-accelerated, language-independent, industrial standard API for producing 3D (including 2D) graphics. The rest of the program will be explained in due course. We also included the GLUT header, which is guaranteed to include " glu.h" (for GL Utility) and " gl.h" (for Core OpenGL).
The header " windows.h" is needed for the Windows platform only.
GlutMainLoop() // Enter the event-processing loop GlutDisplayFunc(display) // Register display callback handler for window re-paint GlutInitWindowPosition(50, 50) // Position the window's initial top-left corner GlutInitWindowSize(320, 320) // Set the window's initial width & height GlutCreateWindow("OpenGL Setup Test") // Create a window with the given title * Main function: GLUT runs as a console application starting at main() */ GlBegin(GL_QUADS) // Each set of 4 vertices form a quad GlClear(GL_COLOR_BUFFER_BIT) // Clear the color buffer (background) // Draw a Red 1x1 Square centered at origin GlClearColor(0.0f, 0.0f, 0.0f, 1.0f) // Set background color to black and opaque Whenever the window needs to be re-painted.
Call back when the window first appears and #include // GLUT, include glu.h and gl.h /* Handler for window-repaint event. * To compile with -lfreeglut -lglu32 -lopengl32 * Tested under Eclipse CDT with MinGW/Cygwin and CodeBlocks with MinGW * GL01Hello.cpp: Test OpenGL/GLUT C/C++ Setup
Make sure that you can run the " GL01Hello.cpp" described in " How to write OpenGL programs in C/C++", reproduced below: