c++ - 窗口不显示图像 SDL

标签 c++ sdl

程序没有在我创建的窗口中显示图像,我也没有收到我设置的任何失败消息,这意味着值不为空。 问题是什么? 这是代码:

#include "SDL.h"
#include "SDL_image.h"
#include <iostream>

int main(int argc,char* argv[])
{
    SDL_Window *window;
    SDL_Renderer *renderer;
    SDL_Event event;
    bool quit = false;
    SDL_Surface *tmpsur = NULL;
    SDL_Texture *tex = NULL;

    SDL_Init(SDL_INIT_EVERYTHING);

    window = SDL_CreateWindow("First window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);
    renderer = SDL_CreateRenderer(window, -1, 0);

    tmpsur = IMG_Load("assets/player.png");
    if (tmpsur == NULL)
    {
        std::cout << "fail" << std::endl;
    }
    tex = SDL_CreateTextureFromSurface(renderer,tmpsur);
    if (tex == NULL)
    {
        std::cout << "fail 2" << std::endl;
    }
    SDL_FreeSurface(tmpsur);

    SDL_RenderPresent(renderer);

    while (!quit)
    {
        while (SDL_PollEvent(&event) != 0)
        {
            if(event.type == SDL_QUIT)
            {
                quit = true;
            }
        }
    }

    SDL_DestroyWindow(window);
    SDL_DestroyRenderer(renderer);
    SDL_Quit();

    return 0;
}

最佳答案

您需要将纹理复制到渲染目标上。在呈现渲染器之前,您需要调用 SDL_RenderCopy像这样:

SDL_RenderCopy(renderer, text, nullptr, nullptr);
SDL_RenderPresent(renderer);

参数中的 nullptrs 将使其在所有目标(窗口)上复制纹理。

关于c++ - 窗口不显示图像 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50339987/

相关文章:

c++ - 如何从重载集中删除当前函数?

c++ - 类的构造函数中的 forward 和 move 有什么区别?

c++ - 如何将双引号放入字符串文字中?

c++ - 使用 SDL 加载 OpenGL 纹理

c++ - SDL 2 程序使用 1.4 GB 内存?

c++ - SDL 无法创建没有常量变量的矩形数组

c++ - 移动 Physics 对象以进行穿透的最小尺寸 Vec3 = 0

c++ - 在C++中将函数返回类型指定为模板参数

graphics - 如何避免在 Linux/X11 上使用 pygame 撕裂

c++ - C++中的屏幕分辨率