• 【Python OpenGL】【2】第一个三角形(Pyopengl)


    根据顶点缓存来生成图元(Python OpenGL)

    原文(英文链接)http://ogldev.atspace.co.uk/www/tutorial03/tutorial03.html

     1 __author__ = "WSX"
     2 
     3 import numpy as np
     4 from OpenGL.GLUT import *
     5 from OpenGL.GL import *
     6 import ctypes
     7 def Draw():
     8     glClear(GL_COLOR_BUFFER_BIT)
     9     glEnableVertexAttribArray(0)
    10     glBindBuffer(GL_ARRAY_BUFFER, VBO)
    11     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, None) #这里的None不能写为0
    12     glDrawArrays(GL_TRIANGLES, 0, 3)
    13     glDisableVertexAttribArray(0)  #解析数据 例如一个矩阵里含有 位置 、颜色、多种信息
    14     glutSwapBuffers()
    15 
    16 
    17 def CreateBuffer():  #创建顶点缓存器
    18     global VBO   #设置为全局变量
    19     vertex = np.array([-1.0,-1.0,0.0,
    20                        1.0,-1.0,0.0,
    21                        0.0,1.0,0.0],dtype="float32")   #创建顶点数组
    22     VBO = glGenBuffers(1)  #创建缓存
    23     glBindBuffer(GL_ARRAY_BUFFER , VBO)   #绑定
    24     glBufferData(GL_ARRAY_BUFFER , vertex.nbytes , vertex , GL_STATIC_DRAW)   #输入数据
    25 
    26 
    27 def main():
    28     glutInit([])
    29     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)  # 显示模式 双缓存
    30     glutInitWindowPosition(100, 100)  # 窗口位置
    31     glutInitWindowSize(500, 500)  # 窗口大小
    32     glutCreateWindow("sanjiao")  # 创建窗口
    33     glutInitContextVersion(4,3)   #为了兼容
    34     glutInitContextProfile(GLUT_CORE_PROFILE)   #为了兼容
    35     glutDisplayFunc(Draw)  # 回调函数
    36     glClearColor(0.0, 0.0, 0.0, 0.0)
    37     CreateBuffer()
    38     glutMainLoop()
    39 
    40 main()

    结果:

  • 相关阅读:
    [POI2014]FarmCraft
    [POI2014]Solar Panels
    Luogu P2824 [HEOI2016/TJOI2016]排序
    CF903G Yet Another Maxflow Problem
    CF901C Bipartite Segments
    CF749E Inversions After Shuffle
    ARC068C Snuke Line
    BZOJ3747 [POI2015]Kinoman
    SA-IS
    简单字符串
  • 原文地址:https://www.cnblogs.com/WSX1994/p/9095362.html
Copyright © 2020-2023  润新知