我想在显示器上画一些像素,这些像素在某些参数后会频繁地改变。例如,如果一个红色和绿色像素发生冲突,它们都会消失,等等。
在每一帧中,我必须处理大约100 - 1000个像素。我这里有一个多线程的方法,它不会给予我30 FPS当前我在RAM中存储了一个像素数组,其中包含所有像素,并具有SDL_Surface
。当数组中的像素发生变化时,它也会在表面上改变,然后在所有的操作完成后被传送到屏幕上。我目前的方法太慢了,我做了一点思考如何提高速度。
我目前的想法是:
- 使用OpenGL直接在GPU上进行像素操作,一些论坛告诉我,这比我目前的方法慢得多,因为“这不是GPU的工作方式”
- 不存储像素数组,直接将BMP存储在RAM中,对其进行操作,然后将其移动到
SDL_Surface
或SDL_Texture
有没有其他方法可以让我快速操作像素?
1条答案
按热度按时间shstlldc1#
SDL_CreateTexture()
w/SDL_TEXTUREACCESS_STREAMING
+SDL_UpdateTexture()
似乎在正确的像素格式下工作得足够好。在我的系统上使用默认渲染器:
(虽然
opengl
信息是相同的:)SDL_PIXELFORMAT_ARGB8888
提供约1毫秒/帧:确保你没有启用vsync(在驱动程序中强制,运行合成器等),否则 * 所有 * 你的帧时间将是~ 16 ms(或任何你的显示刷新设置)。