快速像素绘图库

时间:2010-11-26 19:58:41

标签: linux drawing pixel performance

我的应用程序以逐像素方式生成“动画”,因此我需要有效地绘制它们。我尝试了不同的策略/库,结果不尽如人意,特别是在分辨率较高时。

这是我尝试过的:

  • SDL:好的,但很慢;

  • OpenGL:效率低下的像素操作;

  • xlib:更好,但仍然太慢;

  • svgalibdirectfb,(其他帧缓冲区实现):它们似乎完美但对于最终用户而言绝对太棘手。

(注意:我对这些断言可能不对,如果是这样,请纠正我)

我需要的是以下内容:

  • 快速像素绘制,其性能可与OpenGL渲染相媲美;

  • 它应该适用于Linux(跨平台作为奖励功能);

  • 它应该支持双缓冲和垂直同步;

  • 对于硬件而言,它应该是便携式的;

  • 它应该是开源的。

你能给我一些启发/想法/建议吗?

3 个答案:

答案 0 :(得分:4)

您的像素是稀疏还是密集(例如位图)?如果你是用像素创建密集位图,那么另一种选择是将位图转换为OpenGL纹理并使用OpenGL API以某种帧速率进行渲染。

基本问题是图形硬件在不同的硬件平台上会有很大差异。要么你选择一个抽象层,这会减慢速度,或者更接近于存在的图形硬件类型,这是不可移植的。

答案 1 :(得分:1)

我不完全确定你做错了什么,但可能是你一次向显示器表面写一个像素。

不要那样做。

相反,在主存储器中创建一个渲染表面,其格式与显示表面相同,然后渲染到,然后在单个操作中将整个渲染图像复制到显示中。现代GPU的每次交易都非常慢,但可以在一次操作中非常快速地移动大量数据。

答案 2 :(得分:0)

看起来您将窗口管理器(SDL和xlib)与渲染库(opengl)混淆。

如果您喜欢挑战,只需选择一个窗口管理器(SDL,过剩或xlib),激活双缓冲模式,并确保直接渲染。

你有什么样的图形卡?很可能它会处理GPU上的像素。查看如何在opengl中创建像素着色器。像素着色器按像素处理。