Python 入门基础知识 - 多媒体编程 - 使用PyOpenGL绘制3D图形(一)

Python多媒体编程

使用Python可以进行创建3D图形、播放音乐等多媒体编程。使用PyOpenGL可以创建3D图形。另外使用PyGame可以编写游戏。

使用PyOpenGL绘制3D图形

PyOpenGL模块是对OpenGL的封装,OpenGL提供了不同的函数调用以绘制从简单的图形到复杂的3D图形。使用OpenGL模块可以使用OpenGL中的函数绘制3D图形。

1、安装PyOpenGL

1
pip install PyOpenGL

具体的针对不同系统的可以到这里http://pyopengl.sourceforge.net/查看安装细节

2、使用OpenGL创建窗口

使用PyOpenGL和使用OpenGL创建程序的过程基本类似,在程序中首先对OpenGL进行初始化,设置相关的参数。在使用OpenGL的程序中首先调用glutInit函数,向其传递命令行参数。然后调用glutInitDisplayMode函数设置显示模式,调用glutCreateWindow函数创建窗口,调用glutDisplayFunc设置场景绘制函数。最后调用自定义的初始函数完成OpenGL的初始化,进入消息循环。代码实例演示如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# _*_ coding: utf-8 -*-
# version 2.7.13

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import sys

class OpenGLWidow:

    def __init__(self, width=640, height=480, title='PyOpenGL'):
        glutInit(sys.argv)
        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
        glutInitWindowSize(width, height)
        self.window = glutCreateWindow(title)
        glutDisplayFunc(self.Draw)
        self.InitGL(width, height)

    def Draw(self):
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
        glutSwapBuffers()

    def InitGL(self, width, height):
        glClearColor(0.0, 0.0, 0.0, 0.0)
        glClearDepth(1.0)
        glDepthFunc(GL_LESS)
        glEnable(GL_DEPTH_TEST)
        glShadeModel(GL_SMOOTH)
        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()
        gluPerspective(45.0, float(width) / float(height), 0.1, 100.0)
        glMatrixMode(GL_MODELVIEW)

    def MainLoop(self):
        glutMainLoop()

window = OpenGLWidow()
window.MainLoop()  

下篇文章,介绍下如何进行绘制文字

Licensed under CC BY-NC-SA 4.0
最后更新于 Jul 28, 2025 17:06 +0800