окно не показывает изображение SDL - PullRequest
0 голосов
/ 15 мая 2018

Программа не показывает изображение в окне, которое я создал, также я не получаю никаких сообщений об ошибках, которые я установил, что означает, что значения не равны NULL. В чем проблема? Вот код:

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

1 Ответ

0 голосов
/ 15 мая 2018

Вам нужно скопировать текстуру на цель рендеринга.Перед представлением вашего средства визуализации вам нужно вызвать SDL_RenderCopy следующим образом:

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

В аргументе nullptrs он скопирует текстуру по всей вашей цели (окну).

...