macos - 在 OS X 中,什么是 BASE 图形绘制层?

标签 macos opengl graphics drawing appkit

我开始在 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/

相关文章:

java - 这个相机旋转算法有什么问题?

c++ - 在 C++ 中将 RGB 转换为 HSL

delphi - AggPas Delphi 绘图透明度

opengl - 关于使用 OpenGL 模型 View 矩阵和矩阵变换的说明

c++ - glReadPixels() 返回 0

c++ - mac 中的段错误,但不是其他在线编译器

objective-c - 如何读取文件注释字段

c - opengl中的半圆柱体/封闭圆柱体

macos - 将功能注入(inject)二进制文件的最佳方法

macos - 如何制作在全屏模式下消失的 float 面板