为什么openGL不面向对象?每个人都教授面向对象编程+设计模式,但OpenGL具有许多全局功能。 不是这种不好的风格吗?
答案 0 :(得分:17)
低级API的重点是尽可能简化和移植。给它一个面向对象的架构是不允许的:
最后,你应该真正质疑你所学到的关于OOP的内容。尽管你的学院或大学可能会告诉你,OOP并不是程序设计的灵丹妙药。有很好的理由说明为什么C ++ STL中绝对没有面向对象(以及大部分Boost)。
在某些情况下,面向对象很有用,但你应该知道什么时候有用,什么时候不用,在任何情况下都不应该认为任何不是OOP的东西都是“坏的风格”。
答案 1 :(得分:11)
的OpenGL
一般来说 - OpenGL旨在让我们拥有所有的自由,并且不为我们做出任何选择。通过自由,我指的是选择平台,语言,编程范例,引擎设计,方法以及效率与可读性水平的自由。
为此我赞美OpenGL,为此我讨厌Direct X.
阿门。
旁注: 每个人都教授面向对象的编程,因为它是最容易掌握的。这不是唯一真实的范例。有功能编程,逻辑编程,契约编程,甚至是用C语言编写的面向对象的方式。计算机科学中没有一个真理。至于设计模式,我可以列举OpenGL架构中使用的几个。坏风格?我见过具有aaaaallll全局功能的漂亮的C程序......
答案 2 :(得分:8)
通常,OpenGL 面向对象。它只是用一种不直接支持OOP的语言实现的。但API是面向对象的:它由许多不同的对象类型组成,并在每个对象上定义了一组操作。并且每个对象类型的内部对用户是隐藏的。它满足OOP的所有要求。它碰巧在C中实现,它没有方便的类或成员方法语法。
除此之外,全球功能绝对没有问题。在C ++中,一个常见的建议是尽可能优先使用成员方法。在函数式编程中,全局函数是默认函数。
答案 3 :(得分:4)
答案 4 :(得分:4)
嗯,有几个原因。