📜  PYGLET——形状可见(1)

📅  最后修改于: 2023-12-03 15:33:50.497000             🧑  作者: Mango

PYGLET——形状可见

Pyglet是一个用Python编写的跨平台的多媒体库,可以用来创建多媒体应用程序、游戏和交互式媒体艺术。Pyglet的一个重要功能是可以创建2D和3D形状并将其渲染到窗口中。在这里,我们将介绍如何使用Pyglet创建和呈现形状。

安装Pyglet

首先,我们需要安装Pyglet。您可以使用pip包管理器很容易地安装它:

pip install pyglet
创建一个新窗口

要在Pyglet中创建一个新窗口,我们需要导入pyglet库并创建一个window对象:

import pyglet

window = pyglet.window.Window()

这将创建一个基于窗口的GUI应用程序。但是,由于我们现在没有为其添加任何形状或图像,因此它将是一个空白的窗口。

创建一个形状

现在,我们将创建一个名为Triangle的新形状类。在这个类中,我们将定义三个点以创建一个简单的三角形,并使用Pyglet的Batch类来将它们一起渲染。

class Triangle:
    def __init__(self):
        self.vertices = pyglet.graphics.vertex_list(3, ('v2f', [0, 0, 50, 0, 25, 50]))

    def draw(self):
        self.vertices.draw(pyglet.gl.GL_TRIANGLES)

在上面的代码中,我们使用pyglet.graphics.vertex_list函数创建了一个包含三个点的三角形,并将其存储在self.vertices变量中。我们还定义了一个draw方法,该方法使用Pyglet的GL_TRIANGLES绘图模式来渲染三角形。

显示形状

现在我们已经定义了我们的形状,让我们将它添加到我们的窗口中。为此,我们将使用pyglet.graphics.Batch类。

batch = pyglet.graphics.Batch()

triangle = Triangle()

batch.add(3, pyglet.gl.GL_TRIANGLES, None,
          ('v2i', (100, 100, 150, 100, 125, 150)))

我们首先创建一个新的Batch对象,然后创建一个新的Triangle对象。然后,我们使用batch.add方法将三角形添加到我们的Batch中。第一个参数是三角形的顶点数,第二个参数是绘图模式(在这种情况下是GL_TRIANGLES),第三个参数是图像或纹理名称(这里为空)。最后一个参数是三角形的点坐标列表。

运行程序

现在,我们已经创建和渲染了我们的形状,让我们将其显示在我们的窗口中。

@window.event
def on_draw():
    window.clear()
    batch.draw()

在上面的代码中,我们定义了一个on_draw事件处理程序,该处理程序在窗口需要重绘时被调用。在这个方法中,我们首先使用window.clear()方法清除窗口的内容,然后使用batch.draw()方法来绘制我们的形状。

最后,我们需要使用pyglet.app.run()方法运行我们的程序。

if __name__ == '__main__':
    pyglet.app.run()
完整代码
import pyglet

class Triangle:
    def __init__(self):
        self.vertices = pyglet.graphics.vertex_list(3, ('v2f', [0, 0, 50, 0, 25, 50]))

    def draw(self):
        self.vertices.draw(pyglet.gl.GL_TRIANGLES)

window = pyglet.window.Window()

batch = pyglet.graphics.Batch()

triangle = Triangle()

batch.add(3, pyglet.gl.GL_TRIANGLES, None,
          ('v2i', (100, 100, 150, 100, 125, 150)))

@window.event
def on_draw():
    window.clear()
    batch.draw()

if __name__ == '__main__':
    pyglet.app.run()
结论

现在,您已经学习了如何使用Pyglet创建和呈现形状。您可以根据需要使用这些技术来创建其他形状,并将它们渲染到窗口中。