openGL中vao/vbo的debug经历

Posted sukebei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openGL中vao/vbo的debug经历相关的知识,希望对你有一定的参考价值。

在学习计算机图形学的时候,涉及到了很多固定管线之外的新的技术,比如说VAO和VBO,这些内容因为刚出现的缘故,网上很少能找到类似的资源,一开始学的时候也只是大致学了一下理论部分,但是真正编程的时候,一个简单的示例代码的结构都分不清,更别说看懂了,通过照猫画虎写出来的代码自然也就很难debug了.程序中使用到的很多openGL的库函数,学习的时候也仅仅知道作用,具体的用法也不太清楚,比如说display()和init()部分的区别,同样的内容写到两个函数中会有不同的效果,一种是每次数据随程序运行而更新,另一种是只有在第一次上传GPU时才有效之后不执行,因为不清楚这些东西,一开始想画出来的动态效果怎么都是静止的,为此纠结了许多地方,比如说刷新colorbuffer之类的函数应该放在哪啊,是放在display()开头还是结尾啊,越试越麻烦,到最后还是放弃,而且里面有很多都是封装好的函数,不懂怎么用就绝对没法用,因为和那些越界啊数据类型根本不沾边,所以也没法用debug程序单步执行,到最后不得不去找大佬解释,差不多是又从头学了一遍编程部分才明白一些.最可气的是着色器程序部分,因为着色器部分是上传到GPU的和主程序不一样,在写着色器程序的时候基本就是拿记事本来编程,没有任何的提示,在写程序的时候真的是小心又小心,因为一旦这里出问题,连报错都没有,去网上找有没有好的debug方法只能看到"着色器的调试暂时没有好的方案"之类的回答,所以学习计算机图形的时候只能一行一行的检查了.

以上是关于openGL中vao/vbo的debug经历的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL:一个 VBO 的多个 VAO

OpenGL VAO VBO 着色器混淆

使用 VAO/VBO 进行 OpenGL 模型/纹理渲染

VAO VBO EBO

两个不同的对象 OpenGL。 VAO VBO IBO 网格变形问题

VAO/VBO 管理 - 更改所有 VBO 数据