【问题标题】:window doesnt show image SDL窗口不显示图像 SDL
【发布时间】:2018-05-15 08:07:08
【问题描述】:

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

#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;
}

【问题讨论】:

    标签: c++ sdl


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多