c - SDL2 不会显示图像
问题描述
我想使用 SDL2 打开一个窗口并显示一个图像(准确地说是模因)。由于某种原因,图像没有出现;当我运行程序时,只打开一个空白窗口。
这是我的代码:
#include <stdio.h>
#include <SDL2/SDL.h>
#include <time.h>
#include <stdbool.h>
#include "SDL2_image/SDL_image.h"
typedef struct
{
SDL_Texture *meme1;
SDL_Window *window;
SDL_Renderer *renderer;
}Meme;
void load(Meme *meme)
{
SDL_Surface *surface = NULL;
surface = IMG_Load("meme1.jpg");
meme->meme1 = SDL_CreateTextureFromSurface(meme->renderer, surface);
if(surface == NULL)
{
printf("Could not find meme1.jpg\n");
EXIT_FAILURE;
}
if(SDL_CreateTextureFromSurface(meme->renderer, surface) < 0 )
{
printf("\n\n\nSDL_CreateTextureFromSurface failed: %s\n\n\n", SDL_GetError());
}
SDL_FreeSurface(surface);
}
int process()
{
int quit = 0;
SDL_Event quitEvent;
while(quit==0)
{
while(SDL_PollEvent(&quitEvent))
{
if(quitEvent.type == SDL_QUIT)
{
quit = 1;
}
}
}
return quit;
}
void doRender(SDL_Renderer *renderer, Meme *meme)
{
renderer = SDL_CreateRenderer(meme->window, -1, 0);
SDL_RenderCopy(renderer, meme->meme1, NULL, NULL);
SDL_RenderPresent(renderer);
}
int main(int argc, char *argv[])
{
//creates the main window
SDL_Window *window = NULL;
Meme meme;
SDL_Renderer *renderer = NULL;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("Window",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
800,
600,
0);
if (window == NULL)
{
printf("\nFailed to create window: %s\n", SDL_GetError());
return 1;
}
load(&meme);
int done = 0;
while(!done)
{
done = process();
doRender(renderer, &meme);
}
SDL_DestroyWindow(window);
SDL_DestroyTexture(meme.meme1);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
解决方案
错误来自您没有使用函数“IMG_Init (arg)”初始化 SDL_image
推荐阅读
- hash - 有没有办法使用一些标准算法来散列以下散列函数 h1 : G1 → Z ∗ q , h2 : {0, 1}∗ → Z ∗ q ?
- html - 如何让 CSS 完全删除溢出的文本部分?
- javascript - Bootstrap 4.5手风琴如何保持在页面顶部,即使它充满了项目?
- c# - 使用 LINQ 查询计算两个日期之间的剩余天数
- python - django Rest Framework - 扩展用户模型
- java - 接收器连接器暂停后,Put 方法仍在处理
- javascript - 我可以获取不带 id 的不和谐服务器名称或将其从 id 转换为名称 - discord.JS
- c++ - 我可以通过 C++ 中的原始偏移量手动访问字段吗?
- python - 无法将 Pycharm docker 容器与现有容器链接
- python - 比较Django模板中两个列表的对应元素