2

回到古老的 OpenGL 时代,如果你想在整个窗口上绘制一个带纹理的四边形,你所要做的就是绑定纹理,并多次调用 glVertex 和 glTexCoords 就完成了。

现在看来,为了做到这一点,您需要创建仅从纹理内存复制的着色器,然后加载和编译它们。您还需要创建 VBO 来保存坐标、纹理坐标和四边形索引,然后告诉 OpenGL 每个坐标的位置。

没有更简单的方法吗?

4

1 回答 1

1

好吧,新的 OpenGL 更加灵活,但也更加复杂。首先,您不必使用索引 - 如果您不提供索引 VBO,则绘图调用将仅迭代缓冲区中的顶点和 texcoords。glVertex**v它与 using和其他基于向量的函数(即使在旧 GL 中也应该使用)并没有太大区别。

此外,着色器可以硬编码为字符串;那时您不必提供文件操作工具。

当你把它全部加起来时,它不会使你的代码比旧的 OpenGL 长得多。事实上,它甚至可以缩短一点,前提是您之前没有使用矢量函数。

于 2012-07-31T13:45:16.333 回答