我的应用程序以逐像素方式生成“动画”,因此我需要有效地绘制它们。我尝试了不同的策略/库,结果不尽如人意,特别是在分辨率较高时。
这是我尝试过的:
SDL
:好的,但很慢;
OpenGL
:效率低下的像素操作;
xlib
:更好,但仍然太慢;
svgalib
,directfb
,(其他帧缓冲区实现):它们似乎完美但对于最终用户而言绝对太棘手。
(注意:我对这些断言可能不对,如果是这样,请纠正我)
我需要的是以下内容:
快速像素绘制,其性能可与OpenGL
渲染相媲美;
它应该适用于Linux(跨平台作为奖励功能);
它应该支持双缓冲和垂直同步;
对于硬件而言,它应该是便携式的;
它应该是开源的。
你能给我一些启发/想法/建议吗?
答案 0 :(得分:4)
您的像素是稀疏还是密集(例如位图)?如果你是用像素创建密集位图,那么另一种选择是将位图转换为OpenGL纹理并使用OpenGL API以某种帧速率进行渲染。
基本问题是图形硬件在不同的硬件平台上会有很大差异。要么你选择一个抽象层,这会减慢速度,或者更接近于存在的图形硬件类型,这是不可移植的。
答案 1 :(得分:1)
我不完全确定你做错了什么,但可能是你一次向显示器表面写一个像素。
不要那样做。
相反,在主存储器中创建一个渲染表面,其格式与显示表面相同,然后渲染到,然后在单个操作中将整个渲染图像复制到显示中。现代GPU的每次交易都非常慢,但可以在一次操作中非常快速地移动大量数据。
答案 2 :(得分:0)
看起来您将窗口管理器(SDL和xlib)与渲染库(opengl)混淆。
如果您喜欢挑战,只需选择一个窗口管理器(SDL,过剩或xlib),激活双缓冲模式,并确保直接渲染。
你有什么样的图形卡?很可能它会处理GPU上的像素。查看如何在opengl中创建像素着色器。像素着色器按像素处理。