使用静态方法或初始化对象中的方法来处理 OpenGL 内容?

Use static methods or methods from initialized objects for OpenGL stuff?

对 OpenGL 内容使用静态方法比初始化对象更有效吗?

因此,我没有包含一个模型数据的 对象 "Model",而是只有 VAO 的 ID,因为我使用静态方法加载在模型中和 return VAO ID。着色器也一样:有一个着色器程序 object 还是只有着色器程序的 ID 更好(静态方法创建着色器和 return ID)?这种方式有什么缺点吗?是更高效,还是我应该只使用对象?

(LWJGL3, Java)

这真的取决于。如果这些方法做同样的事情,那么应该没有太大的区别。需要数百万次方法调用才能产生真正的显着差异。然后 JIT 应该会启动 1

一般来说,依赖静态方法会做三件事:

  • 它使用静态方法
  • 创建了对 class 的硬依赖
  • 它会杀死 "polymorphism",你不能只是进入并覆盖方法来实现不同的结果
  • 它使测试你的代码变得相当困难

所以,长话短说:您通常倾向于非静态解决方案,以避免上述所有缺点。