En este artículo, discutiremos cómo crear una vista frontal de una cabaña en OpenGL utilizando dos formas básicas, es decir, un triángulo y un rectángulo.
Enfoque: siga los pasos a continuación para resolver el problema:
- Inicialice el kit de herramientas usando la función glutInit (&argc, argv) .
- Establece el modo de visualización y especifica el esquema de color usando la función glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) .
- Especifique el tamaño de la ventana usando la función glutInitWindowSize(1200, 740) .
- Establece la posición inicial de la ventana usando la función glutInitWindowPosition (0, 0) .
- Inicialice la ventana y configure el título usando la función glutCreateWindow («Estructura básica similar a una choza») .
- Inicialice la función myInit() y realice los siguientes pasos:
- Establezca el color de fondo en naranja usando la función glClearColor(1.0, 0.5, 0.0, 1.0) .
- Especifique el área de visualización mediante la función gluOrtho2D(0.0, 400.0, 0.0, 400.0) .
- Inicialice la función myDisplay() y realice los siguientes pasos:
- Limpia la pantalla usando la función glClear(GL_COLOR_BUFFER_BIT) .
- La parte rectangular de la cabaña se puede dibujar usando la función glPointSize(4.0) .
- Establezca el color de dibujo en glColor3f(0.5f, 0.5f, 0.5f) .
- Crea las 2 ventanas, la puerta, el triángulo superior y el rectángulo principal de la casa usando el comando polígono y configurando sus vértices usando las funciones:
- glBegin(GL_POLYGON);
- glVertex2i (x, y);
- Colorea los polígonos en los pasos anteriores usando la función glColor3f(R, G, B) .
A continuación se muestra la implementación del enfoque anterior:
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) { // 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; }
Producción:
Publicación traducida automáticamente
Artículo escrito por patidarakshay999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA