gpt4 book ai didi

java - 使用已弃用的 glTranslatef 还是使用 glBufferSubData 更新坐标更好?

转载 作者:行者123 更新时间:2023-11-29 05:18:43 25 4
gpt4 key购买 nike

我想让我的 VBO 移动,我想知道我是否应该使用 glBufferSubData 更新整个 VBO 的值,或者只使用已弃用的 glTranslatef 来移动我的东西.

如果我只是更新 VBO 中的值,我应该为顶点、法线和纹理坐标使用单独的 VBO 还是应该将它们全部放在一个?

谢谢。

最佳答案

1:通常您应该始终尝试将 CPU 和 GPU 之间传输的数据量降至最低,以保持最高性能。

因此,应尽可能避免使用 glBufferSubData() 更新整个顶点缓冲区,并应使用 glTranslate() 和 glLoadMatrix()(已弃用)或着色器等转换。

但由于您已经在使用 VBO,我建议使用着色器来使用着色器统一变量和 glUniformMatrix() 进行转换。

2:将顶点、法线和纹理坐标分开或将它们组合在一个 VBO 中由您决定。在大多数情况下,我将它们结合起来,因为它只产生一个句柄,而我只需要一个 glBufferData() 调用。但是如果出现只更新了一部分,比如纹理坐标,其余部分保持原样的情况,那么分开会更好,也可以单独更新。

甚至更高级:如果您使用的是缓冲区隔行扫描,那么您显然必须将它们组合起来。有时使用缓冲区交错比没有交错更快,因为单个顶点所需的数据保存在一起并且可以使用缓存。但是您必须尝试对性能有什么影响(如果有的话),因为它在很大程度上取决于您使用的硬件。

关于java - 使用已弃用的 glTranslatef 还是使用 glBufferSubData 更新坐标更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com