我正在尝试为将来运行的软件渲染示例设置SDL2环境,因此我需要直接访问要绘制的像素。下面是一些代码,它为纹理绘制1个红色像素,然后显示https://wiki.libsdl.org/MigrationGuide#If_your_game_just_wants_to_get_fully-rendered_frames_to_the_screen
BigInteger
正如我在代码注释中提到的,SDL_UnlockTexture使用fullhd纹理最多可达100ms。 (切换到SDL_UpdateTexture导致没有显着差异)我觉得实时渲染太多了。我做错了什么或者我不应该使用所有纹理API(或任何其他GPU加速的api,其中纹理必须每帧上传到gpu内存)以实时渲染整个帧?
答案 0 :(得分:0)
如果您想使用原始pixeldata,您应该使用SDL的SDL_Surface
而不是纹理。这是根据您的情况优化的不同SDL API,请参阅this example,不要忘记update。
原因是纹理存储在VRAM中,而从VRAM读取的速度非常慢。曲面存储在RAM中,在那里处理,只写入VRAM,速度非常快。