Cocoa和OpenGL:绘制矩形数组的最快方法

时间:2012-04-16 11:07:53

标签: cocoa opengl graphics drawing

背景 我正在Cocoa中构建一个屏幕保护程序,其中一些C代码生成表示幅度的2d数组值(介于0和1之间)。然后我想在屏幕上将其显示为网格,其中单元格的颜色代表数组中的值。

我开始使用NSBezierPath的循环太慢了。然后我移动到Rect List,这更快,但仍然太慢。现在我正在考虑nsbitmapimagerep或转向OpenGL(我相信会更快)。

问题: 因此,我的问题是,在可可中使用opengl绘制二维正方形阵列(通常为200x200)的最佳方法是什么,其中位置是固定的,但颜色会发生变化(希望每秒最多30次)?

到目前为止尝试:我想我会想要使用glDrawArrays或类似的东西而不是循环glQUAD?或者可能移动到顶点缓冲区对象(我目前正在阅读)?

1 个答案:

答案 0 :(得分:1)

使用OpenGL,您只需将2D数组定义为纹理。然后,您可以使用简单的四边形绘制将该纹理绘制到屏幕上。

为了获得最佳性能,建议保持2个纹理。 1个纹理是您正在显示的纹理,另一个纹理是您要更新的纹理。完成更新后,将它们交换掉。这可能会有所帮助,因为你的大减速将是通过PCIe总线将纹理数据从主存储器复制到图形存储器。显然,将内存保存在可以提高传输速度的位置。当您上传一小部分数据时,使用调色板将带来巨大的胜利......

相关问题