我正在为学校实现一个软件栅格,我想简单地传递给SDL一个带有像素的缓冲区,并告诉它它们的格式(RGB,每像素24b )。然后SDL会将其呈现到屏幕上。
我尝试过使用SDL_Surface,但由于以下失败,它似乎只适用于图片或数据头:
unsigned char pixels[BYTES_PER_PIXEL * SCREEN_WIDTH * SCREEN_HEIGHT];
// ... all pixels are filled with white color
imageSurface = SDL_CreateRGBSurfaceFrom(pixels,
SCREEN_WIDTH,
SCREEN_HEIGHT,
sizeof(unsigned char) * BYTES_PER_PIXEL, // depth
SCREEN_WIDTH * BYTES_PER_PIXEL, // pitch (row length * BPP)
0x000000ff, // red mask
0x0000ff00, // green mask
0x00ff0000, // blue mask
0); // alpha mask错误是: SDL_CreateRGBSurfaceFrom失败:未知像素格式。在SDL中最快的方法是什么?另外,这种方法与绘制到OpenGL纹理之间是否存在速度差异,然后我会将其渲染到全屏四角体上?
发布于 2016-11-20 05:13:36
SDL_CreateRGBSurfaceFrom depth参数为the depth of the surface in bits。sizeof(unsigned char) * BYTES_PER_PIXEL为3(假设BYTES_PER_PIXEL为3,正如您所说的是24 bpp);乘以一个字节中的位数。
至于第二部分-是的。取决于许多事情,包括CPU和GPU硬件和GL驱动程序。最好的测试方法是同时编写这两个版本。然而,你不太可能看到大的改进,因为在屏幕上画一个四角不是昂贵的操作;光栅的其他部分应该消耗更多。
https://stackoverflow.com/questions/40696665
复制相似问题