C++ SDL将大量像素数据放到屏幕上

C++ SDL将大量像素数据放到屏幕上,c++,sdl,C++,Sdl,我正在创建一个程序,允许您查看像Mandelbrot或Julia集这样的分形。我想尽快渲染它们。我希望有一种方法可以将uint8_t像素值数组放到屏幕上。数组的格式如下所示 {r0,g0,b0,r1,g1,b1,...} (一维数组或RGB颜色值) 我知道我有正确的数据,因为之前我只是设定了个别的点,它起作用了 for(int i = 0;i < height * width;++i) { //setStroke and point are functions that I made

我正在创建一个程序,允许您查看像Mandelbrot或Julia集这样的分形。我想尽快渲染它们。我希望有一种方法可以将uint8_t像素值数组放到屏幕上。数组的格式如下所示

{r0,g0,b0,r1,g1,b1,...}
(一维数组或RGB颜色值)

我知道我有正确的数据,因为之前我只是设定了个别的点,它起作用了

for(int i = 0;i < height * width;++i) {
  //setStroke and point are functions that I made that together just draw a colored point
  r.setStroke(data[i*3],data[i*3+1],data[i*3+2]);
  r.point(i % r.window.w,i / r.window.w);
}
我不知道我在做什么所以请发发慈悲吧

编辑(感谢您的评论:)) 这就是我现在所做的

    SDL_Texture* img = SDL_CreateTexture(ren, SDL_PIXELFORMAT_RGB888,SDL_TEXTUREACCESS_STREAMING,window.w,window.h);
    SDL_UpdateTexture(img,NULL,&data[0],window.w * 3);
    SDL_RenderCopy(ren,img,NULL,NULL);
    SDL_DestroyTexture(img);
但是我得到了这个图像。。。这不是它应该看起来的样子


我认为我的数据格式不对,现在它被格式化为一个按RGB顺序排列的uint8_t数组。有没有其他方法可以格式化它(注意,我不需要alpha通道)

Hrm,至少我看到的所有SDL_渲染器后端都有ARGB首选格式,而不是RGB。
SDL\u GetWindowPixelFormat(win)
是否匹配由
SDL\u getRenderInfo()
返回的任何格式?另外,在中编辑,以便我们知道您不是在调用
SDL\u CreateTexture()
/
SDL\u DestroyTexture()
每个帧:)UpdateTexture是我正在寻找的函数,很抱歉,由于我的代码的布局方式,我需要花费一些时间来创建一个最小的可复制示例(它使用了我制作的SDL包装器,因此代码很多)。感谢您的回复,这非常有帮助,然而,我只需要修正一件事,请看我的编辑above@genpfault我做了编辑,你有什么建议吗?非常感谢你!
    SDL_Texture* img = SDL_CreateTexture(ren, SDL_PIXELFORMAT_RGB888,SDL_TEXTUREACCESS_STREAMING,window.w,window.h);
    SDL_UpdateTexture(img,NULL,&data[0],window.w * 3);
    SDL_RenderCopy(ren,img,NULL,NULL);
    SDL_DestroyTexture(img);