python图形化输出_使用python及opengl进行图形化编程_4.2

Python与OpenGL的简单介绍

我们准备好了进行编写OpenGL相关的代码了,启动DrPython,从第一行开始输入下面的代码:

#First Python

OpenGL Program

#ogl1.py

这几行代码是用来干什么的呢?记住,它们是注释语句,它们不做任何事情,除了提示你或者任何后面来阅读这段代码的人。没有比这更重要的了,当你的代码的复杂度和长度不断增长的时候。

接下来就是保存你的代码,一个好的习惯就是,当你在代码有一些更改的时候,就保存一下。 我们给代码再增加一些:

from OpenGL.GL

import *

from OpenGL.GLU

import *

from OpenGL.GLUT

import *

import sys

记住python有一些可以直接使用的内置的命令可以直接使用,import

声明添加了一些额外的函数。除了import

sys,其它三个命令看起来和我们在第一个程序里使用的有些不一样。第一个程序里,我们必须使用string.find命令,所以我们导入了string模块。在这个新的命令里,from

…import

*格式,我们可以直接使用它们的命令,而不用像第一个程序那样,每次都加一个前缀,像:OpenGL.GL,如果我们使用import

OpengGL.GL,那么,每次都要使用:OpenGL.GL.glVertex2f(x, y)。如果使用from …import

*格式,我们可以简单地使用:glVertex2f(x, y)。简单了好多,你认为呢?最后的import

sys声明,提供了一些常用的命令,但图形程序只需要几个而已,所以我们直接使用了import sys而不是from sys import

*。就像super-3程序一样,我们只需要string模块的一个函数,所以我们使用了import

string。相反,我们想要所有的OpenGL GL,GLU和GLUT库中的函数,所以使用了from … import

*,这会节约很多时间。

总结一下,每一个OpengGL的声明,.GL,.GLU,.GLUT,都导入了一些OpenGL的函数,当你使用这些命令的时候,你可以看函数的前缀很容易地区分它们来自哪一个包,比如:glClear(),肯定是来自GL包。gluPerspective()则来自GLU包,glutWireTeapot()则来自GLUT包,这一节你会看到很多来自这些包的函数。好了,我们继续:

def draw():

glutWireTeapot(0.5)

glFlush()

def是一个新的关键字,它定义了一个新的函数块。函数就是一个代码块,看起来就像一个代码集一样。这个函数的名字是draw,我们可以在其它地方使用它,通过它的名字。注意一下def

draw():之后的缩进的代码,它们就是这个函数的函数体。Draw函数干了两件事情,第一,画了一个0.5大小的茶壶,第二,glFlush(),把画显示到了屏幕上,所以我们能看到它。保存你的工作。

最后,加入下面的代码,保证缩进格式的正确性。

glutInit(sys.argv)

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)

glutCreateWindow("My first OGL Program")

glutDisplayFunc(draw)

glutMainLoop()

保存你的工作,第一行,glutInit(sys.argv),告诉Python我们在保用GLUT进行绘图。GLUT就是“GL

Utilities

Toolkt”,它是一个跨平台的工具包来计算背景图像,比我们自己来写这些要简单得多。它隐藏了很多繁琐的细节。sys.argv可以允许我们在命令行下输入一些参数,如果我们想输入的话。下一行,glutInitDisplayMode(GLUT_SINGLE

|

GLUT_RGB),告诉了图像向导,我们只需要使用一个单显示屏,而且我们将使用RGB颜色模式,GLUT_SINGLE与GLUT_RGB之间的|,表示and,和的意思。glutCreateWindow(“My

First OGL Program”),使用GLUT工具包创建了一个窗口,标题是”My First OGL

Program”。glutDisplayFunc(draw)告诉GLUT工具到哪儿去找函数创建图像的场景。这个程序里就是我们定义的draw函数。最后,glutMainLoop()开始程序的循环,允许GLUT自动检测程序的输入,输出。

你肯定已经完成了它了,运行它!你应该看到和下图类似的窗口,当然,背景可能不一样,它取决于你的桌面。

sg_trans.gif

至少,你能看到一个像茶壶一样的东西。发生了什么事情呢?我们创建了一个图像窗口,我们没有定义背景,所以背景就是你的桌面,然后在上面画了一个茶壶。用你的鼠标拖动窗口,你会发现背景也在变化。

我们可以使用一行简单的代码来修正这个问题,在def

draw():后面加一行:glClear(GL_COLOR_BUFFER_BIT),记住是函数的内容,缩进格式不要弄错了。保存它,再次运行它试试,你应该看到和下面类似的图像:

sg_trans.gif

移动你的窗口,就像我们预期的那样。最后,我们再加两行代码到我们的程序,再glutInitDisplayMode函数下面:

glutInitWindowSize(250, 250)

glutInitWindowPosition(100, 100)

保存你的工作,这两行让我们窗口的大小(250X250),初始位置(100,100)。执行程序,你会发现和原来的位置有点差别了。

#First Python

OpenGL program

#ogl1.py

from OpenGL.GL

import *

from OpenGL.GLU

import *

from OpenGL.GLUT

import *

def draw():

glClear(GL_COLOR_BUFFER_BIT)

glutWireTeapot(0.5)

glFlush()

glutInit(sys.argv)

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)

glutInitWindowISize(250, 250)

glutInitWindowPosition(100, 100)

glutCreateWindow("My Second OGL Program")

glutDisplayFunc(draw)

glutMainLoop()

#End of

program

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值