Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C SDL2-纹理和频繁变化的图片_C_Sdl_Framebuffer_Sdl 2 - Fatal编程技术网

C SDL2-纹理和频繁变化的图片

C SDL2-纹理和频繁变化的图片,c,sdl,framebuffer,sdl-2,C,Sdl,Framebuffer,Sdl 2,我陷入了某种“合乎逻辑”的常规。我的代码从我的相机接收实时预览图片,这些图片被转换为RWops结构,最后作为纹理加载到SDL。现在我的问题是:如何在不破坏和重建纹理的情况下更新纹理?使用atm时的一些代码: for(x=0; x<100; x++){ capture_to_memory(camera, context, (const char**)&data, &size); rw = SDL_RWFromConstMem(data, size);

我陷入了某种“合乎逻辑”的常规。我的代码从我的相机接收实时预览图片,这些图片被转换为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);
}

for(x=0;x快速查看SDL_图像后,似乎没有API将图像解码为现有纹理

如果您不能请求未压缩格式的图像-您必须直接使用libjpeg。或者重新考虑如何获取图像的整个想法-也许直接从视频设备(v4l?)读取会更好


为了快速更改纹理,SDL为
SDL\u CreateTexture
设置了
SDL\u TEXTUREACCESS\u STREAMING
标志。然后,当您需要修改数据时,使用
SDL\u LockTexture
锁定纹理,修改返回的内存并将其解锁。

SDL\u image不提供此功能。如果确实需要,您可以使用libpng/libjpeg/不管你的格式是什么。然而,速度慢的部分很可能是解码图像,而不是为它分配内存,所以它不会给你带来太多好处。你从哪里获取数据,实际的格式/分辨率/帧速率是什么?是的,这也是我注意到的。解码占用了大部分时间。我不得不说,我在做一个覆盆子PI.想使用SDL作为不想使用x11服务器。我的数据来自DSLR(libgphoto2),它是JPG格式,分辨率为640x400,所以没有那么大。我对如何在SDL中处理快速变化的图片更感兴趣。我不能总是破坏和重建纹理!