• 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.


  • 相关阅读:
    JQuery文档插件
    MVC3下使用Jquery异步提交数据!
    不错的在线客服插件~
    让火狐和chorme浏览器支持uploadify带Cookie上传
    Socket服务器代码
    Winform控件加载时闪烁的解决方案!
    MVC3 无刷新验证码
    网络时间同步
    关于多线程委托的控件操作
    c# 利用反射动态给实体类对象赋值
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3266550.html
Copyright © 2020-2023  润新知