C++ SDL将大量像素数据放到屏幕上
我正在创建一个程序,允许您查看像Mandelbrot或Julia集这样的分形。我想尽快渲染它们。我希望有一种方法可以将uint8_t像素值数组放到屏幕上。数组的格式如下所示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
{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);