c++ - 为什么 OpenGL 有全局函数?

标签 c++ opengl paradigms

为什么 openGL 不是面向对象的?大家都在教面向对象编程+设计模式,但是OpenGL有很多全局函数。 这不是坏风格吗?

最佳答案

低级 API 的全部意义在于使其尽可能精简和可移植。给它一个面向对象的架构不允许这样做:

  • 多态性增加了不必要的函数调用开销。
  • 它迫使您使用一些相对困难的调用约定,这会降低可移植性。
  • 您不能包装面向对象的体系结构以使其成为程序化的,但您可以反其道而行之;因此,让事情尽可能灵活是有意义的。如果需要,围绕 OpenGL 编写面向对象的包装器是微不足道的。

最后,您真的应该质疑您所学的有关 OOP 的内容。尽管您的学院或大学可能会告诉您,OOP 并不是程序设计的 Elixir 。在 C++ STL(以及与此相关的大部分 Boost)中绝对没有面向对象的原因非常充分。

面向对象在某些情况下很有用,但您应该了解它何时有用,何时无用,并且在任何情况下您都不应认为任何不是 OOP 的东西都是“糟糕的风格”。

关于c++ - 为什么 OpenGL 有全局函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166622/

相关文章:

javascript - 让递归函数永远运行?

c++ - 使用 libsdl2-image-2.0-0 的问题

C++、C2447 '{' : missing function header (old-style format list? )、win32 和 long

c++ - #include <windows.h> 导致很多语法错误

opengl - openGL 中的初学者透明度/不透明

jQuery 范例?

c++ - 在 C++ 中,如何从 B 类访问 Class 中的多维数组?

c++ - 在Linux上为Windows构建GCC插件

c++ - 与 glfw3 链接时出错

python - 在不破坏以前代码的情况下在 python 中返回多个值