Skip to content
Related Articles

Related Articles

Improve Article
Program to draw a Hut in using OpenGL in C++
  • Last Updated : 19 Apr, 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).
    • Specifiy 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).

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 drivers
void 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 console
void 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 Code
int main(int argc, char** argv)
{
    // Initiaize 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:

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :