【发布时间】:2019-10-06 01:25:01
【问题描述】:
您好,我正在尝试使用 SDL2 加载嵌入的 png。我之前只设法创建了文件,但没有直接加载它。我试着把 _binary_flower_png_ 在 IMG_LoadTexture 中,但它没有工作。这是我走了多远(它工作正常,但我不会创建文件)
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
extern const char _binary_flower_png_start[];
extern const char _binary_flower_png_end[];
extern const int _binary_flower_png_size;
int main()
{
SDL_Event event;
SDL_Renderer *renderer = NULL;
SDL_Texture *texture = NULL;
SDL_Window *window = NULL;
SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(
500, 500,
0, &window, &renderer
);
//File create
FILE *f = fopen("flower.png", "wb");
fwrite(_binary_flower_png_start, &_binary_flower_png_end,
&_binary_flower_png_start, f);
fclose(f);
printf("File created");
//Load here
IMG_Init(IMG_INIT_PNG);
texture = IMG_LoadTexture(renderer, "flower.png");
//Render
while (1) {
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
if (SDL_PollEvent(&event) && event.type == SDL_QUIT)
break;
}
SDL_DestroyTexture(texture);
IMG_Quit();
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return EXIT_SUCCESS;
}
【问题讨论】:
-
您需要
IMG_LoadTexture_RW和SDL_RWFromConstMem。