当前位置:  开发笔记 > 编程语言 > 正文

为什么OpenGL具有全局功能?

如何解决《为什么OpenGL具有全局功能?》经验,为你挑选了3个好方法。

为什么openGL不是面向对象的?每个人都教授面向对象编程+设计模式,但OpenGL具有许多全局功能.这不是风格吗?



1> Peter Alexan..:

低级API的重点是尽可能简化和移植.给它一个面向对象的架构不允许这样:

多态性增加了不必要的函数调用开销.

它迫使您使用一些相对困难的调用约定,这会降低可移植性.

你不能包装一个面向对象的体系结构来使它成为程序性的,但你可以做相反的事情; 所以,让事情尽可能灵活是有道理的.如果你愿意,可以在OpenGL周围编写一个面向对象的包装器.

最后,你应该真正质疑你所学的关于OOP的内容.尽管你的学院或大学可能会告诉你,OOP并不是程序设计的灵丹妙药.有很好的理由说明为什么C++ STL中绝对没有面向对象(以及大部分Boost).

在某些情况下,面向对象很有用,但是你应该知道什么时候有用,什么时候有用,在任何情况下都不应该认为任何不是OOP的东西都是"坏的风格".



2> Kornel Kisie..:

OpenGL的

OpenGL应该支持所有平台 - 在这方面没有任何接近C的地方 - 多亏了几乎每个设备都可以使用相同的API

OpenGL应该支持所有语言 - 在这方面也没有任何接近C的东西 - 多亏了这一点,支持调用C库(几乎所有的)的每种语言都可以使用OpenGL

OpenGL是一个API,而不是一个引擎 - 它打算为图形硬件提供低级接口,但足够高级别,是对不同硬件的抽象--C比C++低很多,OOP不低水平

OpenGL是一个构建的框架,而不是一个完整的解决方案 - 没有一个真正的方式来编写图形代码,OpenGL不应该强迫我们做任何事情 - 通过OOP它会迫使我们进行他们的"colution"

OpenGL 与任何特定的编程范例无关 - 因此我们可以将OpenGL包装成函数,逻辑或OOP语言 - 或者在程序上使用它

OpenGL与效率有关 - 而且你不能通过直接函数调用获得更高的效率.OOP与适合特定任务的效率一样高效.

一般来说 - OpenGL旨在让我们拥有所有的自由,并且不为我们做出任何选择.通过自由,我指的是选择平台,语言,编程范例,引擎设计,方法以及效率与可读性水平的自由.

为此我赞美OpenGL,为此我讨厌Direct X.

阿门.

旁注:每个人都教授面向对象的编程,因为它是最容易掌握的.这不是唯一真实的范例.有函数式编程,逻辑编程,契约编程,甚至是用C语言编写的面向对象的方式.计算机科学中没有一个真理.至于设计模式,我可以列举OpenGL架构中使用的几个.坏风格?我见过具有aaaaallll全局功能的漂亮C程序......


我同意这一点,刚开始用OpenGL在C#中使用OpenTK框架,男孩我喜欢它.我发现XNA很痛苦,这实际上很有趣!

3> jalf..:

通常,OpenGL 面向对象的.它只是用一种不直接支持OOP的语言实现的.但API是面向对象的:它由许多不同的对象类型组成,并在每个对象上定义了一组操作.并且每个对象类型的内部对用户是隐藏的.它满足OOP的所有要求.它恰好在C中实现,它没有方便的类或成员方法语法.

除此之外,全球职能绝对没有错.在C++中,一个常见的建议是尽可能优先使用成员方法.在功能编程中,全局函数是默认的.


OpenGL根本不是面向对象的.OpenGL中没有类,只有原始数据类型.由于没有类,因此没有对象,显然没有可以在对象上调用的方法.同样,一切都只是改变OpenGL FSM状态的原始数据.没有消息传递(因为没有对象).没有继承(没有类).没有多态(没有类).OpenGL API与OOP共享的唯一内容是它是一个抽象,但它使用过程抽象内部,而不是对象和类层次结构.
@Poita_:关键在于你通过一组相关的过程来操纵数据 - 而不是任何任意的过程直接操作数据,因为它在普通的C中很常见.但是那时OOP有一些不同的解释.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有