Python PyOpenGL 简介

17 Mar 2025 | 6 分钟阅读

在本教程中,我们将学习 Python 中的 pyopengl 库及其用法。OpenGL 是一个开源库,支持 Windows、Linux 和 MacOS 等多个平台。它也支持多种编程语言。我们将使用 Python 编程语言来实现它。

引言

与其他图形库相比,OpenGL 是一个相当简单的库,易于实现。它是一个跨语言的 API,因此可以在其他编程语言中使用。在 OpenGL 中,我们需要在空间内指定对象,例如 - 要创建立方体,我们需要指定“角”。角被称为顶点(复数)或顶点(单数)。

安装

我们可以使用 pip 包管理器轻松安装它。在终端中运行以下命令,并在系统中安装 OpenGL。

上面的命令将在本地系统中安装 pyopengl。我们将看到以下输出。

Introduction to PyOpenGL in Python

您可以通过以下步骤手动下载它

  1. 转到指定的链接,向下滚动到“下载和安装”标题。
  2. 从该部分下载所有必需的文件。
  3. 导航到下载文件的文件夹。
  4. 在终端或命令提示符中运行适当的命令来安装或执行文件。
    python setup.py

此命令将安装文件并设置程序运行所需的必要环境。

请注意,上面的命令假定系统中已安装 python 和 setuptools,并且 setup.py 文件与终端或命令提示符打开的文件夹位于同一位置。

现在,让我们开始通过编码实现。

实施

第一步是在代码中导入 OpenGL。为此,请运行以下命令。

在继续之前,必须导入一些额外的依赖项才能在我们的程序中使用此库。在尝试在程序中使用该库之前,应先安装这些依赖项。下面是一些库

当我们运行上面的代码片段时,我们会得到“导入成功”的消息,这表明我们已成功安装了该库。

现在,让我们开始使用 OpenGL 库创建一个用于显示图形的窗口。以下代码将创建一个窗口,注释将解释其工作原理。

示例 -

解释 -

在上面的代码中,我们创建了一个标题为“OpenGL Graphics Window”的窗口,大小为 500x500 像素,位于屏幕左上角。glutDisplayFunc()glutIdleFunc() 方法将导致 showScreen() 函数被连续调用。此函数负责清除屏幕并显示任何图形或形状。glutMainLoop() 函数负责保持窗口打开并更新其内容。请注意,上面的代码使用的是 python-OpenGL 绑定,如果您使用的是其他编程语言,库可能会有所不同。

现在,我们将使用 OpenGL 创建正方形,但我们应该熟悉 OpenGL 所遵循的坐标系统 -

窗口中的 (0,0) 点代表窗口的左下角。如果我们从该点向上移动,则沿着 y 轴行进,如果我们从该点向右移动,则沿着 x 轴行进。因此,窗口的左上角点将是 (0, 500),右上角点将是 (500, 500),右下角点将是 (500, 0)。

重要的是要注意,y 轴随着向上移动而增加,x 轴随着向右移动而增加,这与传统的笛卡尔坐标系相反。

让我们编写创建正方形的代码。

示例 -

解释 -

上面的代码使用 OpenGL 创建了一个标题为“OpenGL Coding Practice”的窗口,大小为 500x500 像素,位于屏幕左上角。它将创建一个彩色窗口,并连续调用 showScreen() 函数。在 showScreen() 函数内部,它将清除屏幕,重置图形/形状的位置,调用“square”函数,该函数将使用指定的顶点坐标绘制一个正方形,然后交换缓冲区。它将创建一个带有静态正方形的窗口,并保持窗口打开并以循环方式运行。

但是,我们的代码不完整。如果绘制了正方形,然后立即清除屏幕。我们将无法看到正方形实际绘制时的情况,因为它会在瞬间出现和消失。让我们编写另一个函数。

示例 -

现在,让我们将所有代码片段编译到一个代码文件中,以避免歧义。

示例 -

说明

在上面的代码中,我们使用 OpenGL.GLUT 库创建了一个窗口,并将显示模式设置为 GLUT_RGBA。我们设置了窗口大小和位置,创建了一个标题为“OpenGL Coding Example”的窗口,并将显示函数和空闲函数设置为 showScreen。

showScreen 函数清除屏幕,加载单位矩阵,调用 iterate 函数来设置视口、投影矩阵和模型视图矩阵。我们设置要绘制的正方形的颜色,然后调用 square 函数来在屏幕上绘制一个正方形。

glutMainLoop() 函数启动 GLUT 程序的 main loop,并保持窗口打开,在屏幕上显示正方形。

结论

本教程介绍了 OpenGL 的使用,这是一个用于创建 3D 图形的库。涵盖了下载和安装库的过程,以及一个演示如何使用 OpenGL 创建基本形状的示例程序。示例程序还概述了在此库的绘图过程中使用的一些函数调用。总的来说,虽然使用 OpenGL 可能具有挑战性,但它是创建 3D 图形的强大工具,并为经验丰富的用户提供了广泛的可能性。