我陷入了某种“合乎逻辑”的常规。我的代码从我的相机接收实时预览图片,这些图片被转换为 RWops 结构,最后作为纹理加载到 SDL。现在我的问题是:如何在不破坏和重建纹理的情况下更新纹理?一些使用 atm 的代码:
for(x=0; x<100; x++){
capture_to_memory(camera, context, (const char**)&data, &size);
rw = SDL_RWFromConstMem(data, size);
// This part is building the texture through SDL_image
sdlTexture = IMG_LoadTexture_RW(sdlRenderer, rw, 0);
SDL_RenderClear(sdlRenderer);
SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
SDL_RenderPresent(sdlRenderer);
SDL_DestroyTexture(sdlTexture);
}
如您所见,以及我的猜测,那是完全低效的。我注意到的是,对于这 100 张图片,我需要大约 12 秒才能显示它们(jpg)。如果我只是让捕获和转换运行,它会在 4.5 秒内完成。因此,它使我的日常工作与构建和破坏纹理相结合,这一切都在减慢。
有什么建议吗?