我开始在 OSX 中进行 GUI 开发,我想知道系统中用于绘制图形的 VERY BASE 层是什么?似乎有很多上层抽象(AppKit、OpenGL、CG 等),它们很好而且省时,但对我来说在我理解基础层之前无法使用(除非它的二进制或汇编,在这种情况下我投入毛巾)。
最佳答案
I am beginning GUI development in OSX, and I am wondering, what is the VERY BASE layer in the system for which to draw graphics?
不管你信不信,但自从 MacOS X Tiger 以来,整个图形堆栈都基于 OpenGL。 OpenGL下面只是GPU驱动程序,然后是裸机。
It seems as if there are so many upper level abstractions (AppKit, OpenGL, CG, etc), which are nice and timesaving, but for me unusable until I understand the base layer (unless its binary or assembly, in which case I throw in the towel).
为什么它们对你来说无法使用?您希望从增加的知识中获得什么?您使用的级别越低,您必须越熟悉它的工作原理才能有效地利用它。 OpenGL本身已经是相当低的水平了。 OpenGL 实现向您隐藏了一些血淋淋的细节,例如按需纹理数据从快速内存交换到常规内存等,并且 GLSL 编译器也相当高级。但另一方面,为了有效地使用 OpenGL,您应该以 GPU 本身使用的格式传递数据,着色器可以以其二进制形式缓存,并且缓冲区对象为您提供用于 DMA 传输的 API。
如果您真的对最低层感兴趣,则必须查看 GPU 设计,即金属。 AMD 实际上发布了有关其某些 GPU 的完整编程文档(Google for OpenGPU)。
关于macos - 在 OS X 中,什么是 BASE 图形绘制层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602845/