7

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

目前在 OpenGL 频谱中使用哪些游戏来进行快速顶点处理?

4

2 回答 2

10

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

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

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

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

于 2011-06-27T18:29:55.350 回答
3

VBO是现代答案。

不要误解 OpenGL 意义上的术语“客户端”和“服务器”。这不是Apache(HTTP 服务器)和 Chrome(HTTP 客户端等)之间的区别。在 OpenGL 术语中,客户端是您/您的代码。服务器是图形驱动程序/硬件。

VBO 允许您将顶点信息存储在图形硬件上,这可以让您避免每次使用时将每个顶点发送到卡。这是一个巨大的优势。

您询问顶点处理,但要回答您的问题,我们必须澄清您的意思。如果您的意思是获取显卡的顶点,答案是 VBO。如果我们谈论的是操纵顶点数据,这可以通过Shaders有效地实现。

于 2011-06-27T18:30:23.043 回答