ok,书接上文,
之前的说明了如何在linux环境下搭建python开发opengl环境,并且运行一个示例程序。(很棒,但是是程序自带的一个示例函数,不是我们写的)
现在来自己编写opengl的程序。
首先要对整个这个程序的结构有所了解
glutInit() # 初始化glut工具 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) #设置展示模式,这个我好像还没见过 glutInitWindowSize(400, 400) #窗体尺寸 glutCreateWindow("test") #创建窗体,参数是窗体titile glutDisplayFunc(Draw) #设置绘制的回调函数 glutIdleFunc(Draw) #这个,我只能猜测是python的idle相关来 glutMainLoop() #开始运行
这是程序的主题部分,如果各位之前用过glut开发opengl的话,那肯定会很快上手的(你可以跳过这段了),因为api几乎和c++版本的一样。
如果你没用过也没关系,看看后面的注释,基本就是这样,各个平台都大同小异。
程序的主题还是draw函数部分。opengl使用方法和其他平台一样(要不说是跨平台莫),
glClear(GL_COLOR_BUFFER_BIT) #清空缓存,颜色的
glBegin(GL_TRIANGLE_STRIP) #设置图元
# 巴拉巴拉
glEnd() #绘制完毕
glFlush() # 刷新
这里要指出的是图元的类型:
参数 | 含义 |
---|---|
GL_POINTS |
单个顶点集 |
GL_LINES |
线段 |
GL_LINE_STRIP |
不闭合的连续线段 |
GL_LINE_LOOP |
闭合的线段 |
GL_POLYGON |
多边形 |
GL_TRAINGLES |
独立三角形 |
GL_TRAINGLE_STRIP |
三角形串,线性连续 |
GL_TRAINGLE_FAN |
三角形串,扇状连续 |
GL_QUADS |
独立四边形 |
GL_QUAD_STRIP |
四边形串 |
关于这个我实在不想赘述,因为多用几次就明白了,在网上找到一张图对于理解这个还是不错的
恩,基本就是这样,最后自己写个很简单的opengl 2d小示例,绘制一个图案出来。
from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def Draw(): glClear(GL_COLOR_BUFFER_BIT) # glRotatef(0.5, 0, 1, 0) # glutWireTeapot(0.5) # glPolygonMode() # glLineWidth(9); # draw the left page glColor3f(1.0,0.0,1.0) glBegin(GL_TRIANGLE_STRIP) glVertex2f(-0.5,0.5) glVertex2f(0.0,0.5) glVertex2f(0.0,-0.5) glVertex2f(-0.5,-0.5) glVertex2f(-0.5,0.5) glEnd() # draw the right page glColor3f(0.0,1.0,1.0); glBegin(GL_TRIANGLE_STRIP) glVertex2f(0.0,0.5) glVertex2f(0.5,0.5) glVertex2f(0.5,-0.5) glVertex2f(0.0,-0.5) glVertex2f(0.0,0.5) glEnd() glFlush() glutInit() glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) glutInitWindowSize(400, 400) glutCreateWindow("test") glutDisplayFunc(Draw) glutIdleFunc(Draw) glutMainLoop()
ok,that is all.