zoukankan      html  css  js  c++  java
  • 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.


  • 相关阅读:
    5.7填数字游戏求解
    5.6判断回文数字
    5.5百钱买百鸡问题
    5.4三色球问题
    5.3哥德巴赫猜想的近似证明
    5.2求两个数的最大公约数和最小公倍数
    5.1舍罕王的失算
    4.19递归反向输出字符串
    Elasticsearch 安装
    linux 安装nginx步骤
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3266550.html
Copyright © 2011-2022 走看看