mac 上的 SetPixel 等价物?

SetPixel equivalent on mac?

我目前正在编写一个软件渲染器,在我将其用于 windows 之后,我开始考虑将其移植到 Mac。

因此我的问题是:Win32 GDI SetPixel 函数的等效项是什么? 我需要做的就是在 (x,y) 处绘制一个像素。

我是 mac 开发的新手,我发现最接近答案的是使用一个 OpenGL 纹理来绘制。但是,如果我必须使用 OpenGL,那将无法实现软件渲染的意义...

甚至可以在 osx 中绘制单个像素吗?

简答

只需使用 LibSDL(最好是 2.0 版)。

长答案

无论如何,您必须将像素数据从系统内存获取到图形内存。一种方法是使用 OpenGL。您可以将 OpenGL 想象成一个奇特的 API,它可以让您将数据从系统内存推送到图形内存。因为这正是您想要做的,所以使用 OpenGL 是有意义的。

But that kind of defeats the point of having software rendering if i have to use OpenGL...

无论您喜不喜欢,显卡都会在屏幕上合成像素,因此避免使用 OpenGL 不会获得任何特别的便携性优势。回到 90 年代,您可以获得一个指向帧缓冲区的指针并将像素推送到那里,但那些日子已经一去不复返了。

LibSDL 很好,因为它为您提供了一个 API,让您可以将像素推送到缓冲区,然后 LibSDL 负责将缓冲区放在屏幕上。

SetPixel() 无论如何都慢得可怕,所以你也应该在 Windows 上使用 LibSDL。