PyOpenGL初步

第一个程序

基于PyOpenGL对OpenGL进行学习。本例根据C++代码来构建Python程序。首先实现一个入门程序。

关于头文件

在C++中,一般会引用gl.h和glu.h,或者是glut.h。若使用GLUT处理窗口管理操作,则不需引入前两个头文件。在Python中,进行如下引用:

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

使用GLUT进行显示窗口管理

初始化语句:

gluiInit()

创建窗口标题语句:

glutCreateWindow('标题名')

接下来,需要指定显示窗口中要显示的内容。将用于创建要显示图的函数名传给glutDisplayFunc()
执行下列语句后,所有已创建的显示窗口连同其中的图形内容将被激活:

glutMainLoop()

该函数必须是程序中的最后一个。它显示初始图形并使程序进入检查鼠标或键盘等设备输入的无穷循环之中。
其他函数:
glutInitWindowPosition() 用于给出窗口左上角的初始位置。
glutInitWindowSize() 用于设定显示窗口的初始宽度和高度的像素数。
glutInitDisplayMode() 用于设定显示窗口的缓存和颜色模型等选项。该函数的变量使用符号化GLUT常量来赋值。例如,下面的命令指出显示窗口使用单个缓存且使用由红绿蓝三元素组成的颜色模型来选择颜色:

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)

显示窗口的其他设置函数:
glClearColor() 可用于通过设定RGB值设定显示窗口的背景颜色。要使上述赋值的窗口得到显示,必须引用glClear()。具体如下:

glClear(GL_COLOR_BUFFER_BIT)

GL_COLOR_BUFFER_BIT用于指定它是颜色缓存(刷新缓存)中的位值,该缓存将使用glClearColor函数中指定的值来设定。

在第一个程序汇总,要显示一条简单的二维线段。为此,需告诉OpenGL怎样将图形投影到显示窗口中,因为在OpenGL中把生成二维线段看成生成三维线段的特例。使用下面两个函数来设置投影类型和其他观察参数:

glMatrixMode(GL_PROJECTION)
gluOrtho2D(0.0,200.0,0
0,150.0)

表示:使用正投影将世界坐标系二维矩形区域的内容映射到屏幕上,区域的x坐标值从0.0到200.
0,y坐标值从0.0到150.0.只要是在该矩形内定义的对象,都会出现在显示窗口中。

程序代码

本程序用于绘制一条直线。直线颜色为绿色,起点为(180,15),终点为(10,145),窗口背景为白色。代码如下:

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

def lineSegment():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(0.0,0.4,0.2)     #线的颜色为绿色
    glBegin(GL_LINES)
    glVertex2i(180,15)
    glVertex2i(10,145)
    glEnd()
    glFlush()

def init():
    glClearColor(1.0,1.0,1.0,0.0)
    glMatrixMode(GL_PROJECTION)
    gluOrtho2D(0.0,200.0,0.0,150.0)

if __name__=="__main__":
    glutInit()
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowPosition(50,100)
    glutInitWindowSize(400,300)
    glutCreateWindow(u'First Program')

    init()
    glutDisplayFunc(lineSegment)
    glutMainLoop()

程序运行结果如下图:
第一个程序,绘制直线

描述图形的函数lineSegment成为一个显示回调函数。该函数由glutDisplayFunc作为在显示窗口需要重新显示时引入的函数来“注册”。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值