Python OpenGL第一个三角形(Pyopengl)

Posted WSX_WOLF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python OpenGL第一个三角形(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()

结果:

 

以上是关于Python OpenGL第一个三角形(Pyopengl)的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL学习 02 第一个三角形

OpenGL学习 02 第一个三角形

Python之OpenGL笔记(5):OpenGL着色器语言(GLSL)应用画三角形

OpenGL:绘制多边形时,如果第一个顶点在屏幕空间之外怎么办(三角扇)

卐 2-第一个OpenGL程序

在窗口中渲染时,OpenGL 中的第三个三角形顶点显示为 0.0