【发布时间】:2015-08-13 23:13:36
【问题描述】:
我一直在尝试深入了解 SDL 的基础知识,但我被看似简单的东西难住了。
SDL_MapRGB() 需要const SDL_PixelFormat*,我使用SDL_PixelFormatEnum 在我的项目中创建纹理unit32。但我找不到任何将其转换为与SDL_MapRGB() 一起使用的方法。
可能有比使用SDL_MapRGB() 更简单的方法,但是这个问题仍然会让我感到困惑,因为您可以轻松地将其转换为另一种方式。
无关紧要,但如果你想知道其余的代码,那就去吧。
#include <SDL.h>
SDL_Window *sdlWindow;
SDL_Renderer *sdlRenderer;
int main( int argc, char *args[] )
{
int w = 640;
int h = 480;
Uint32 format = SDL_PIXELFORMAT_RGB888;
SDL_CreateWindowAndRenderer(w, h, 0, &sdlWindow, &sdlRenderer);
SDL_Texture *sdlTexture = SDL_CreateTexture(sdlRenderer, format, SDL_TEXTUREACCESS_STREAMING, w, h);
extern uint32_t *pixels;
for (int x = 0; x < w; x++) {
for (int y = 0; y < h; y++) {
pixels[x + y * w] = SDL_MapRGB(format, 255, 255, 255);
}
}
SDL_UpdateTexture(sdlTexture, NULL, pixels, 640 * sizeof (Uint32));
SDL_RenderClear(sdlRenderer);
SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
SDL_RenderPresent(sdlRenderer);
SDL_Delay(5000);
SDL_Quit();
return 0;
}
在你说之前,我知道这只会产生白屏。
【问题讨论】: