【问题标题】:SDL rect not appearingSDL 矩形没有出现
【发布时间】: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 线程两秒钟而不是使用正确的事件循环?

标签: c++ sdl rect


【解决方案1】:

我搞定了,我只需要添加 SDL_RenderPresent()

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
相关资源
最近更新 更多