2.B] Explain the operations for displaying a picture using GLUT.
Answer:
Here’s a complete example in C++ that demonstrates how to display a square using GLUT:
#include <GL/glut.h> // Function to display the square void display() { // Clear the screen glClear(GL_COLOR_BUFFER_BIT); // Set the color of the square (red) glColor3f(1.0, 0.0, 0.0); // Begin drawing a polygon (square) glBegin(GL_POLYGON); // Specify the vertices of the square glVertex2f(-0.5f, -0.5f); // Bottom left glVertex2f(0.5f, -0.5f); // Bottom right glVertex2f(0.5f, 0.5f); // Top right glVertex2f(-0.5f, 0.5f); // Top left // End drawing glEnd(); // Flush the graphics pipeline glFlush(); } // Main function int main(int argc, char** argv) { // Initialize GLUT glutInit(&argc, argv); // Set the display mode (single buffer and RGB color) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // Set the window size glutInitWindowSize(500, 500); // Set the window position glutInitWindowPosition(100, 100); // Create the window with a title glutCreateWindow("Display a Square"); // Set the background color to white glClearColor(1.0, 1.0, 1.0, 1.0); // Set up the projection (orthographic 2D) glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); // Register the display callback function glutDisplayFunc(display); // Enter the GLUT event-processing loop glutMainLoop(); return 0; }
Explanation:
Include GLUT Header:
#include <GL/glut.h>
: This includes the GLUT library needed to create windows, handle user input, and display graphics.
Display Function:
- The
display()
function contains the code to render a square. glClear(GL_COLOR_BUFFER_BIT)
: Clears the screen before drawing.glColor3f(1.0, 0.0, 0.0)
: Sets the color of the square to red.glBegin(GL_POLYGON)
andglEnd()
: These functions define the vertices of the square.glFlush()
: Ensures that all OpenGL commands are executed.
Main Function:
- Initialization:
glutInit(&argc, argv);
initializes GLUT. - Display Mode:
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
sets the display mode to single buffering with RGB color. - Window Setup:
glutInitWindowSize()
andglutInitWindowPosition()
define the size and position of the window. - Create Window:
glutCreateWindow("Display a Square");
creates a window with the specified title. - Background Color:
glClearColor(1.0, 1.0, 1.0, 1.0);
sets the background color to white. - Projection:
glMatrixMode(GL_PROJECTION);
,glLoadIdentity();
, andgluOrtho2D()
set up a simple orthographic projection that allows you to specify coordinates in 2D. - Display Callback:
glutDisplayFunc(display);
registers thedisplay()
function as the callback for rendering. - Main Loop:
glutMainLoop();
starts the GLUT event loop, which waits for events like window resizing or redrawing and calls the appropriate callback functions.