2D游戏和现代OpenGL
前概念 好的,到目前为止,我收集的是: 不要使用固定的管道(已弃用或将要弃用) vbos存储“对象模型”(主要是n个顶点数据) vaos描述了如何放置数据,以便绘图调用知道每个vbo的哪一部分是关于哪种顶点信息的(一个vao可以引用多个vbo,相反则有点困难) 每个绘制调用还将顶点数据发送到着色器 我如何看待3D(可选) 有了这些信息,我可以看到使用现代OpenGL绘制3D复杂对象的效果如何。您基本上是将一堆对象模型(可能来自Blender或其他类似软件)加载到具有局部坐标的VBO中,然后只需为对象的每个实例提供不同的着色器参数(偏移量)即可绘制到世界空间。 问题/问题 但是,在2D中,问题和优先级完全不同。您不需要绘制很多复杂的对象,也不需要复杂的投影矩阵,并且着色器和着色器要简单得多。 用现代OpenGL频繁(实际上经常,基本上每帧)绘制变化的几何形状的最佳方法是什么? 在下面的段落中,您可以看到一些问题的想法(圆形和矩形问题),可以更好地识别我感兴趣的更改类型。 我的尝试(可选) 因此,我开始考虑如何处理在屏幕上绘制基本的2D几何: 正方形:[(1, 0), (1, 1), (0, 1), (0, 0)]在局部空间中为正方形的几何图形加载VBO,然后为着色器提供正方形的实际宽度以及世界坐标和颜色信息 冷却,看起来很容易。让我们转到一个圆圈: 一个圆圈:三角形风扇。精度(顶点数)多少?对于小圆圈,精度必须较低,对于错误环,精度必须较高。显然,加载1个VBO可能无法满足所有情况。如果由于圆的大小被调整为更大而需要增加精度怎么办? 不太酷。让我们移动到稍微容易一点的矩形: 矩形:嗯。没有“常规矩形几何体”。您只需要一个宽度/高度比例即可,但是,如果尺寸改变,每个矩形可能会有所不同。 如您所见,事情从那里走下坡路。特别是对于复杂的多边形等等。 无代码政策:P 我只需要一个大概的想法,不需要任何代码,尤其是C或C ++代码。就像这样说:“使用此顶点数据创建一个VBO,然后将其绑定,...”。