使用静态方法还是来自初始化对象的方法来处理OpenGL?

时间:2019-02-08 16:30:37

标签: java opengl lwjgl

将静态方法用于OpenGL东西而不是初始化对象是否更有效?

因此,我没有一个包含一个模型数据的对象“模型”,而是使用了VAO的ID,因为我使用静态方法加载模型并返回了VAO ID。对于着色器来说是一样的事情:拥有着色器程序 object 还是仅拥有着色器程序的ID更好(静态方法创建着色器并返回ID)?这样有什么弊端吗?是更有效,还是我应该只使用对象?

(LWJGL3,Java)

1 个答案:

答案 0 :(得分:1)

这真的取决于。如果这些方法做的是相同的事情,那么应该没有太大的区别。要真正实现重大改变,就需要有数百万种方法调用。然后,无论如何,JIT都应该参与进来

通常,依靠静态方法可以完成三件事:

  • 它使用静态方法创建对类的硬依赖性
  • 它杀死了“多态性”,您不能只是进入并重写方法以实现不同的结果
  • 这使得测试 代码变得非常困难

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