【发布时间】:2015-12-30 15:21:34
【问题描述】:
我正在尝试使用现代 OpenGL 和着色器,而不是我目前使用的即时模式。我最近了解了 VBO 和 VAO,我仍在努力了解它们,但我知道 VBO 需要一组作为顶点的浮点数,然后将其传递给 GPU 等
使用 VBO 在不同位置绘制多个对象(它们都是相同的)的最佳方法是什么?是不是得先画一个,然后修改事先传入的数组,然后再画一遍,修改,再画,再修改等等……每帧画面中的所有块?还是有更好的办法?
我正在努力实现这一目标:http://imgur.com/cBgJ0sK
感谢任何帮助 - 我不想学习坏的(已弃用的、旧的)即时模式习惯,因为我可以学习更现代的方式!
【问题讨论】:
-
如果你刚刚开始,坚持基本的绘制命令;使用顶点缓冲区,它们对于简单的 2D 场景来说已经足够快了。从技术上讲,实例化渲染可能更有效,但请确保您在了解更高级的内容之前了解基础知识。
-
你的意思是尝试绘制那张图片中的内容是高级的开始,还是你的意思是我应该每帧更新 VBO(因为它更对我正在做的事情来说不够快)?
-
我建议您从使用一个静态 VBO 开始,并使用着色器统一将每个四边形移动到其位置。大多数(核心)OpenGL 教程都应该教这个。
-
非常感谢。第一次在 Stack Overflow 我很高兴/印象深刻!
-
我发现这是对 opengl 实例化的一个很好的介绍:learnopengl.com/#!Advanced-OpenGL/Instancing