c++ - 在 OpenGL 中处理顶点的最佳技术? C++

标签 c++ opengl vertex rendering-engine

我正在为 Quake 实现 map 渲染器。我目前正在遍历顶点数组并一次发送一个。有人告诉我,通过使用顶点数组,我可以通过批量发送顶点来大大加快渲染过程。现在,我刚刚查看了显示列表,最后查看了 VBO 或顶点缓冲区对象。 VBO 提到了与客户端/服务器通信相关的巨大优势。如果我只是要开发客户端而不是服务器,VBO 是否仍然适用于我正在做的事情?

目前在 OpenGL 范围内使用哪些游戏进行快速顶点处理?

最佳答案

当他们说“客户端/服务器”通信时,他们并不是在谈论互联网网络。

  • 客户端 = CPU
  • 服务器 = GFX 硬件

这是两个独立的硬件。虽然它们(通常)连接到同一 block 主板,但它们仍然需要相互通信。显卡通常无法访问主板上的主内存,因此需要将顶点(和纹理、索引等)实际发送到图形设备。

短篇小说:使用顶点缓冲区对象。对于静态数据(如 Quake map ),没有比这更好的了。顶点被发送到图形设备(服务器)一次并留在那里。当您逐个顶点绘制事物时(使用诸如 glBegin(GL_TRIANGLES) 之类的东西),顶点会在每一帧 中发送,您可以想象,这是非常低效的。

关于c++ - 在 OpenGL 中处理顶点的最佳技术? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497176/

相关文章:

OpenGL索引缓冲区对象元素顺序绘制不正确

C++:如何正确堆叠 for 循环迭代

c++ - 为什么这段代码没有显示我认为应该显示的内容?

c++ - Eigen - 从 map 中获取矩阵?

c++ - 损坏的纹理编号 OpenGL,在 glGenTextures/glBindTexture 之后

c++ - 不同模型的转换不起作用

c++ - Qt 在窗体之间传递变量

opengl - 如何剪切任意形状的纹理?

actionscript-3 - AS3 Softbody 纹理八哥

c++ - (C++ 和 OpenGL)我试图在批处理渲染器中旋转一组顶点(它将模拟一个正方形),但它不是 100% 工作 :(