C++程序 使用OpenGL绘制小屋的程序
介绍
OpenGL(Open Graphics Library,开放图形库)是一个跨语言、跨平台的编程接口,可用于编写 2D 和 3D 的应用程序。本篇文章将会介绍如何在C++中使用OpenGL绘制小屋的程序。
环境
在开始之前,我们需要准备好以下环境:
- Visual Studio 2019
- OpenGL
- GLUT(OpenGL Utility Toolkit)
步骤
1. 创建一个新的项目
首先,我们需要在 Visual Studio 中创建一个新的 Win32 控制台应用程序项目。在创建此项目时,应勾选“空项目”复选框。
2. 添加 OpenGL 类库
在开始编写代码前,我们需要在 Visual Studio 中添加 OpenGL 和 GLUT 类库。
- 在 Visual Studio 中选择“工具” > “NuGet 包管理器” > “程序包管理器控制台”。
- 在控制台中输入以下命令,添加 OpenGL 和 GLUT 类库:
Install-Package nupengl.core
Install-Package freeglut
- 安装完成后,我们需要将这些库文件添加到项目中。在解决方案资源管理器中,右键单击项目名称并选择“属性”。
- 在属性页中,选择“VC++ 目录”,然后选择“包含目录”,并输入以下路径:
$(SolutionDir)\packages\nupengl.core.<version_number>\build\native\include
$(SolutionDir)\packages\freeglut.<version_number>\build\native\include
- 接下来,选择“VC++ 目录”,然后选择“库目录”,并输入以下路径:
$(SolutionDir)\packages\nupengl.core.<version_number>\build\native\lib\$(Platform)\$(PlatformToolset)\
$(SolutionDir)\packages\freeglut.<version_number>\build\native\lib\$(Platform)\$(PlatformToolset)\
- 最后,我们选择“链接器” > “输入”,然后输入以下命令:
opengl32.lib
glu32.lib
freeglut.lib
3. 编写代码
我们现在可以开始编写代码了。首先,我们需要包含以下头文件:
#include <Windows.h>
#include <GL/glut.h>
在编写代码时,我们可以使用以下三个函数:
glBegin(GLenum mode)
:开始绘制一个 primitive。glVertex*()
:定义 primitive 的一个顶点。glEnd()
:结束绘制。
以下是一个简单的绘制三角形的示例:
void drawTriangle() {
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glEnd();
}
我们还需要定义一个窗口函数,用于创建窗口并实现绘图逻辑:
void display() {
glClear(GL_COLOR_BUFFER_BIT);
drawTriangle();
glFlush();
}
最后,在 main
函数中,我们执行以下代码:
// 初始化 GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
// 创建窗口
glutCreateWindow("My Window");
glClearColor(0.0, 0.0, 0.0, 0.0);
// 注册回调函数
glutDisplayFunc(display);
glutMainLoop();
这将创建一个窗口,并显示一个三角形。
接下来,我们使用以上的函数来绘制小屋。以下是一个绘制小屋的示例:
void drawHouse() {
// 绘制房屋本体
glBegin(GL_QUADS);
glVertex2f(-0.5f, -0.5f);
glVertex2f(-0.5f, 0.5f);
glVertex22f, 0.5f);
glVertex2f(0.5f, 0.5f);
glEnd();
// 绘制屋顶
glBegin(GL_TRIANGLES);
glVertex2f(-0.6f, 0.5f);
glVertex2f(0.6f, 0.5f);
glVertex2f(0.0f, 0.8f);
glEnd();
// 绘制门
glBegin(GL_QUADS);
glVertex2f(-0.2f, -0.5f);
glVertex2f(-0.2f, 0.2f);
glVertex2f(0.2f, 0.2f);
glVertex2f(0.2f, -0.5f);
glEnd();
// 绘制窗户
glBegin(GL_QUADS);
glVertex2f(-0.35f, 0.0f);
glVertex2f(-0.35f, 0.2f);
glVertex2f(-0.15f, 0.2f);
glVertex2f(-0.15f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glVertex2f(0.15f, 0.0f);
glVertex2f(0.15f, 0.2f);
glVertex2f(0.35f, 0.2f);
glVertex2f(0.35f, 0.0f);
glEnd();
}
结论
在本篇文章中,我们介绍了如何在C++中使用OpenGL绘制小屋的程序。我们学习了在Windows和Visual Studio上安装和配置OpenGL和GLUT,然后使用三个基本绘图函数来绘制小屋。通过本篇文章的学习,我们进一步了解了OpenGL的用法,并且获得了一些基本的绘图技能,还可以运用这些技能来绘制更加复杂的图形。