PyOpenGL_VBO解析_1_基本操作

目录 

1.前言

2.开始玩转VBO

                2.1 准备工作

                2.2 创建顶点缓冲区对象

                2.3 开始绘制

                2.4解绑 

 2.5绘图

3 第一个VBO程序

1.前言

        由于网上的许多关于VBO的解析的文章很少(特别是关于Python),有许多文章写的很笼统,使许多人不知道VBO怎么使用,但它又很有必要(提高渲染效率,这在进行大量绘图时很有用),为了节省大家的时间,也为了让大家更好的了解和使用VBO,现在本文章将系统的讲解VBO。(由于本人还不是太熟悉,如果有什么问题,欢迎大家在评论区指正,请见谅)

2.开始玩转VBO

        用PyOpenGL绘图时往往要处理几百个点,这时立即模式(使用glBegin/glEnd方式)就显得无能为力 (况且Python运行效率本来就慢), 这时VBO是最好的选择  

       VBO(顶点缓冲)是把我们要渲染的图元信息(比如纹理、颜色)一次性发送到GPU,和立即模式下相比,它的渲染效率显然更高   所以我们首选VBO进行大量绘图

 VBO绘图流程:

1、创建顶点缓冲区对象
2、分离顶点混合数组
3,、绘制

4、解绑顶点缓冲区对象

2.1 准备工作

我们先导入库:

from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGL.GLU import *
from OpenGL.GLUT import *
import numpy as np

2.2 创建顶点缓冲区对象

        我们先以绘制正方体为例子,先定义一个函数(我定义的函数名是cube()),再在函数中写入正方体的顶点数据(坐标):

# 顶点集
vertices = np.array([
    -0.5, 0.5, 0.5,  
    0.5, 0.5, 0.5,  
    0.5, -0.5, 0.5,  
    -0.5, -0.5, 0.5, 
    -0.5, 0.5, -0.5,  
    0.5, 0.5, -0.5,  
    0.5, -0.5, -0.5, 
    -0.5, -0.5, -0.5
], 'f')

# 索引集
indices = np.array([
    0, 1, 2, 3, 
    4, 5, 1, 0,
    3, 2, 6, 7, 
    5, 4, 7, 6, 
    1, 5, 6, 2, 
    4, 0, 3, 7 
],'H')
#numpy数组类型很重要,否则你用不正确的数组绘图就会一片空白(本人真实经历)

        在这里我解释一下索引集的作用:正方体有6个面,4个点构成一个面,则有24个点,但有16个点是重复的,索引值的作用类似于字串符的索引,你可以把顶点集的一组数据看做一个字符,索引值的每一个值为索引࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值