C++程序 使用OpenGL绘制小屋

C++程序 使用OpenGL绘制小屋

在这篇文章中,我们将讨论如何使用OpenGL中的两个基本形状(即三角形和矩形)创建小屋的正面视图。

方法: 按照下面的步骤解决问题:

  • 使用函数 **glutInit( &argc,argv) ** 初始化工具包。
  • 使用函数 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) 设置显示模式并指定颜色方案。
  • 使用函数 glutInitWindowSize(1200, 740) 指定窗口大小。
  • 使用函数 glutInitWindowPosition(0, 0) 设置窗口的起始位置。
  • 使用函数 glutCreateWindow(“Basic hut like structure”) 初始化窗口并设置标题。
  • 初始化函数 myInit() 并执行以下步骤:
    • 使用函数 glClearColor(1.0, 0.5, 0.0, 1.0) 将背景颜色设置为橙色。
    • 使用函数 gluOrtho2D(0.0, 400.0, 0.0, 400.0) 指定显示区域。
  • 初始化函数 myDisplay() 并执行以下步骤:
    • 使用函数 glClear(GL_COLOR_BUFFER_BIT) 清除屏幕。
    • 可以使用函数 glPointSize(4.0) 绘制小屋的矩形部分。
    • 将绘图颜色设置为 glColor3f(0.5f, 0.5f, 0.5f)
    • 使用多边形命令创建2个窗户、门、顶部三角形和主矩形,并使用函数设置它们的顶点:
      • glBegin(GL_POLYGON);
      • glVertex2i ( x,y );
    • 使用函数 glColor3f(R, G, B) 将多边形着色。

下面是上述方法的实现:

// C++程序,用于上述方法
 
#include <GL\glut.h>
#include <iostream>
#include <windows.h>
using namespace std;
 
// 初始化驱动程序的函数
void myInit(void)
{
    // 清除所有的屏幕颜色
    glClearColor(1.0, 0.5, 0.0, 1.0);
 
    // 将背景颜色设置为橙色
    glMatrixMode(GL_PROJECTION);
 
    glLoadIdentity();
 
    // 指定显示区域
    gluOrtho2D(0.0, 400.0, 0.0, 400.0);
}
 
// 在控制台上显示类似小屋的结构的函数
void myDisplay(void)
{
    // 清除屏幕缓冲区
    glClear(GL_COLOR_BUFFER_BIT);
 
    glPointSize(4.0);
 
    // 小屋的长方形部分
    glColor3f(0.5f, 0.5f, 0.5f);
 
    // 开始绘制多边形
    glBegin(GL_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();
 
    // 右边的窗户更新
    glColor3f(1.0f, 0.0f, 0.0f);
 
    // 开始绘制多边形
    glBegin(GL_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();
 
    // 右边窗户更新部分2
    glColor3f(1.0f, 0.0f, 0.0f);
 
    // 开始绘制多边形
    glBegin(GL_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();
 
    // 门
    glColor3f(0.60f, 0.42f, 0.16f);
 
    // 开始绘制多边形
    glBegin(GL_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();
 
    // 创建门的第二部分
    glColor3f(0.60f, 0.42f, 0.16f);
 
    //开始绘制多边形
 
    // 绘制多边形
    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();
 
    // 小屋的上三角形部分
    glColor3f(1.0f, 0.0f, 1.0f);
 
    // 开始绘制多边形
    glBegin(GL_POLYGON);
 
    // 绘制多边形
    glVertex2i(10, 200);
    glVertex2i(340, 200);
 
    glVertex2i(200, 390);
 
    glVertex2i(10, 200);
    glVertex2i(200, 390);
 
    glEnd();
 
    // 发送所有输出到屏幕
    glFlush();
}
 
// 主代码
int main(int argc, char** argv)
{
    // 初始化init函数
    glutInit(&argc, argv);
 
    // 初始化工具箱;
    glutInitDisplayMode(
        GLUT_SINGLE | GLUT_RGB);
 
    // 设置显示模式并指定颜色方案
    glutInitWindowSize(1200, 740);
 
    // 指定窗口大小
    glutInitWindowPosition(0, 0);
 
    // 设置窗口的起始位置
    glutCreateWindow("基本的类似小屋的结构");
 
    // 创建窗口并设置标题
    glutDisplayFunc(myDisplay);
    myInit();
 
    // 额外初始化
    glutMainLoop();
 
    // 进入循环直到事件发生
    return 0;
}  

输出:

C++程序 使用OpenGL绘制小屋

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例