Program to draw a Hut in using OpenGL in C++ - GeeksforGeeks

10 Oct, 2021
In this article, we will discuss how to create a front-facing view of a hut in OpenGL using two basic shapes i.e. triangle and rectangle.
Approach: Follow the steps below to solve the problem:
Initialize the toolkit using the function glutInit (&argc, argv).
Set the display mode and specify the color scheme using the function glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB).
Specify the window size using the function glutInitWindowSize(1200, 740).
Set the starting position for the window using the function glutInitWindowPosition (0, 0).
Initialize the window and set the title using the function glutCreateWindow(“Basic hut like structure”).
Initialize the myInit() function and perform the following steps:Set the background color to orange using the function glClearColor(1.0, 0.5, 0.0, 1.0).Specify the display area using the function gluOrtho2D(0.0, 400.0, 0.0, 400.0).
Set the background color to orange using the function glClearColor(1.0, 0.5, 0.0, 1.0).
Specify the display area using the function gluOrtho2D(0.0, 400.0, 0.0, 400.0).
Initialize the myDisplay() function and perform the following steps:Clear the screen using the function glClear(GL_COLOR_BUFFER_BIT).The rectangular part of the hut can be drawn using the function glPointSize(4.0).Set the drawing color to glColor3f(0.5f, 0.5f, 0.5f).Create the 2 windows, the door, the top triangle, and the main rectangle of the house using the polygon command and setting their vertices by using the functions:glBegin(GL_POLYGON);glVertex2i ( x, y );Color the polygons in the above steps using the function glColor3f(R, G, B).
Clear the screen using the function glClear(GL_COLOR_BUFFER_BIT).
The rectangular part of the hut can be drawn using the function glPointSize(4.0).
Set the drawing color to glColor3f(0.5f, 0.5f, 0.5f).
Create the 2 windows, the door, the top triangle, and the main rectangle of the house using the polygon command and setting their vertices by using the functions:glBegin(GL_POLYGON);glVertex2i ( x, y );
glBegin(GL_POLYGON);
glVertex2i ( x, y );
Color the polygons in the above steps using the function glColor3f(R, G, B).
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include <GL\glut.h>#include <iostream>#include <windows.h>using namespace std; // Function to initialize the driversvoid myInit(void){    // Clear all the screen color    glClearColor(1.0, 0.5, 0.0, 1.0);     // Sets background color to orang    glMatrixMode(GL_PROJECTION);     glLoadIdentity();     // Specify the display area    gluOrtho2D(0.0, 400.0, 0.0, 400.0);} // Function to display the Hut like// structure on the consolevoid myDisplay(void){    // Clear the screen buffer    glClear(GL_COLOR_BUFFER_BIT);     glPointSize(4.0);     // Rectangular part of hut    glColor3f(0.5f, 0.5f, 0.5f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(40, 40);    glVertex2i(320, 40);     glVertex2i(40, 200);    glVertex2i(320, 200);     glVertex2i(40, 200);    glVertex2i(40, 40);     glVertex2i(320, 200);    glVertex2i(320, 40);     glEnd();     // Right Window Update    glColor3f(1.0f, 0.0f, 0.0f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(220, 60);    glVertex2i(300, 60);     glVertex2i(220, 150);    glVertex2i(300, 150);     glVertex2i(220, 60);    glVertex2i(220, 150);     glVertex2i(300, 150);    glVertex2i(300, 60);     glEnd();     // Right Window Update part 2    glColor3f(1.0f, 0.0f, 0.0f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(220, 170);    glVertex2i(300, 170);     glVertex2i(220, 190);    glVertex2i(300, 190);     glVertex2i(220, 170);    glVertex2i(220, 190);     glVertex2i(300, 190);    glVertex2i(300, 170);     glEnd();     // Door    glColor3f(0.60f, 0.42f, 0.16f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(130, 40);    glVertex2i(130, 160);     glVertex2i(130, 160);    glVertex2i(180, 160);     glVertex2i(180, 100);    glVertex2i(180, 40);     glVertex2i(120, 40);    glVertex2i(170, 40);     glEnd();     // Create Door Part 2    glColor3f(0.60f, 0.42f, 0.16f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(130, 170);    glVertex2i(130, 180);     glVertex2i(130, 180);    glVertex2i(180, 180);     glVertex2i(180, 170);    glVertex2i(180, 180);     glVertex2i(130, 170);    glVertex2i(180, 170);     glEnd();     // Hut's top triangle part    glColor3f(1.0f, 0.0f, 1.0f);     // Begin the polygon    glBegin(GL_POLYGON);     // Create the polygon    glVertex2i(10, 200);    glVertex2i(340, 200);     glVertex2i(200, 390);     glVertex2i(10, 200);    glVertex2i(200, 390);     glEnd();     // Sends all output to display    glFlush();} // Driver Codeint main(int argc, char** argv){    // Initialize the init function    glutInit(&argc, argv);     // Initialize the toolkit;    glutInitDisplayMode(        GLUT_SINGLE | GLUT_RGB);     // Sets the display mode and    // specify the colour scheme    glutInitWindowSize(1200, 740);     // Specify the window size    glutInitWindowPosition(0, 0);     // Sets the starting position    // for the window    glutCreateWindow("Basic hut like"                     " structure");     // Creates the window and    // sets the title    glutDisplayFunc(myDisplay);    myInit();     // Additional initializations    glutMainLoop();     // Go into a loop until event    // occurs    return 0;}
Output:
surindertarika1234
surinderdawra388
c-graphics
computer-graphics
OpenGL
C++
C++ Programs
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Inheritance in C++
Map in C++ Standard Template Library (STL)
C++ Classes and Objects
Bitwise Operators in C/C++
Virtual Function in C++
Header files in C/C++ and its uses
Program to print ASCII Value of a character
C++ Program for QuickSort
How to return multiple values from a function in C or C++?
Sorting a Map by value in C++ STL