Program to Draw a Hut in Using OpenGL in C

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

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

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:
o Set the background color to orange using the
function glClearColor(1.0, 0.5, 0.0, 1.0).
o 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:
o Clear the screen using the
function glClear(GL_COLOR_BUFFER_BIT).
o The rectangular part of the hut can be drawn using the
function glPointSize(4.0).
o Set the drawing color to glColor3f(0.5f, 0.5f, 0.5f).
o 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:
o glBegin(GL_POLYGON);
o glVertex2i ( x, y );
o Color the polygons in the above steps using the function glColor3f(R,
G, B).
Below is the implementation of the above approach:

PROGRAM

// 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 orange


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)
{
// 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;
}

You might also like