ubuntu 下python opengl编程(2)

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.


原文地址:https://www.cnblogs.com/bbsno1/p/3266550.html