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