【发布时间】:2021-10-25 02:29:22
【问题描述】:
我试图让 SDL_Rect 出现在屏幕上,并带有来自位图的纹理。我运行这个程序,屏幕只是白色的,没有图像。
#include "SDL.h"
int main(int argc, char** args) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window* window = NULL;
window = SDL_CreateWindow("window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1280, 720, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Surface* surface = SDL_LoadBMP("car.bmp");
SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.w = 1280;
rect.h = 720;
SDL_RenderCopy(renderer, texture, NULL, &rect);
SDL_Delay(2000);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
【问题讨论】:
-
SDL_Init is a function,你应该写
SDL_Init(/* flags go here */);现在它没有被调用。我也很确定你应该在 before 做任何与 sdl 相关的事情之前调用它。不确定这是否是您的问题,但这绝对是奇怪的。 -
你最后也有类似的问题 SDL_Quit,这也是一个函数,所以你又少了括号。
-
@Borgleader 我解决了这个问题,但似乎并没有解决我的问题。感谢您指出这一点!
-
您确认图片加载正确了吗?此时我唯一能想到的是相对路径问题,所以也许可以尝试使用绝对路径。
-
您的
SDL_RenderPresent()电话在哪里?为什么要阻塞 GUI 线程两秒钟而不是使用正确的事件循环?