码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-05-27 12:10:35      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:href   main   ble   nump   span   profile   nbsp   class   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】【2】第一个三角形(Pyopengl)

标签:href   main   ble   nump   span   profile   nbsp   class   opengl   

原文地址:https://www.cnblogs.com/WSX1994/p/9095362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!