gpt4 book ai didi

c++ - 如何从原始位图数据到 SDL 表面或纹理?

转载 作者:行者123 更新时间:2023-11-30 05:42:29 36 4
gpt4 key购买 nike

我正在使用一个名为 Awesomium 的库,它具有以下功能:

void Awesomium::BitmapSurface::CopyTo   (   unsigned char *     dest_buffer, // output
int dest_row_span, // input that I can select
int dest_depth, // input that I can select
bool convert_to_rgba, // input that I can select
bool flip_y // input that I can select
) const
Copy this bitmap to a certain destination. Will also set the dirty bit to False.

Parameters
dest_buffer A pointer to the destination pixel buffer.
dest_row_span The number of bytes per-row of the destination.
dest_depth The depth (number of bytes per pixel, is usually 4 for BGRA surfaces and 3 for BGR surfaces).
convert_to_rgba Whether or not we should convert BGRA to RGBA.
flip_y Whether or not we should invert the bitmap vertically.

这很棒,因为它为我提供了一个包含原始位图数据的 unsigned char * dest_buffer。几个小时以来,我一直在尝试将这些原始位图数据转换成某种我可以在 SDL 中使用的可用格式,但我遇到了麻烦。 =[ 有什么方法可以将它加载到 SDL 纹理或表面中吗?最好有两个例子,但如果我只得到一个例子(纹理或表面),那就足够了,我将不胜感激。 :) 我尝试使用 SDL_LoadBMP_RW 但它崩溃了。我什至不确定我是否应该使用该方法。

最佳答案

SDL_LoadBMP_RW 用于加载 BMP 文件格式的图像。它需要一个 SDL_RWops*,这是一个文件流,而不是像素缓冲区。你想要的功能是SDL_CreateRGBSurfaceFrom .我相信这个电话应该适合您的目的:

SDL_Surface* surface =
SDL_CreateRGBSurfaceFrom(
pixels, // dest_buffer from CopyTo
width, // in pixels
height, // in pixels
depth, // in bits, so should be dest_depth * 8
pitch, // dest_row_span from CopyTo
Rmask, // RGBA masks, see docs
Gmask,
Bmask,
Amask
);

关于c++ - 如何从原始位图数据到 SDL 表面或纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626543/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com