繁体   English   中英

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

[英]Best technique to handle vertices in OpenGL? C++

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

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

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

  • 客户端= CPU
  • Server = GFX硬件

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

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

维也纳国际组织是现代的答案。

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

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

您询问顶点处理,但要回答您的问题,我们必须澄清您的意思。 如果你的意思是获得顶点到显卡,答案是维也纳国际中心。 如果我们谈论操纵顶点数据,可以通过着色器有效地实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM