我目前正在编写一个软件渲染器,在我开始在Windows上工作后,我开始考虑将其移植到Mac上。
我的问题是:与Win32 GDI SetPixel功能相同的是什么? 我需要做的就是在(x,y)处绘制一个像素。
我是mac开发的新手,我发现的最接近的答案就是使用一个人们可以使用的OpenGL纹理。但是,如果我必须使用OpenGL,这种方式会破坏软件渲染......
甚至可以在osx中绘制单个像素吗?
答案 0 :(得分:2)
只需使用LibSDL(最好是2.0版)。
无论如何,您必须将像素数据从系统内存中提取到图形内存中。一种方法是使用OpenGL。您可以将OpenGL视为一种花哨的API,它可以将数据从系统内存推送到图形内存。由于这正是您想要做的,因此使用OpenGL是有意义的。
但是,如果我必须使用OpenGL,这种方式会破坏软件渲染......
无论您喜欢与否,显卡都会在屏幕上合成像素,因此您不会因为避免使用OpenGL而获得任何特定的便携性优势。回到90年代你可以得到一个指向帧缓冲区的指针并在那里推动像素,但那些日子已经过去了。
LibSDL很不错,因为它为您提供了一个API,可以将像素推送到缓冲区,然后LibSDL负责将缓冲区放在屏幕上。
无论如何, SetPixel()
非常慢,所以你也应该在Windows上使用LibSDL。