Skip to main content

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

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

Python多媒体编程

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

使用PyOpenGL绘制3D图形

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

1、安装PyOpenGL

pip install PyOpenGL

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

2、使用OpenGL创建窗口

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

# _*_ 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()

运行的结果如下 

Image

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

版权声明

版权声明

durban.zhang 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(http://www.walkerfree.com/),版权所有,侵权必究。本文永久链接:http://www.walkerfree.com/article/113