Программа SDL и SDL_image ничего не делают в Eclipse - PullRequest
0 голосов
/ 25 апреля 2018

Я пытался заставить изображение PNG отображаться на экране в моем окне SDL. Я использую Eclipse CDT. SDL.h и SDL_image.h, похоже, правильно связаны между собой, так как в компиляторе функции всплывают с цветом. Однако когда я запускаю свой код, буквально ничего не происходит. В компиляторе нет ошибок, нет комментариев, ничего нет. Окно не появляется. Я был бы очень признателен, если бы кто-нибудь мог помочь мне в этом вопросе.

Кроме того, SDL ранее работал на моем компьютере ранее (без использования SDL_image) - в котором я запустил симуляцию частиц, которая работала совершенно нормально.

Мой код:

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

using namespace std;

SDL_Window *m_window; //Window upon which the game will be displayed.
SDL_Renderer *m_renderer; //Renderer used to draw the objects on the window.
SDL_Texture *playerTex;

int SCREEN_WIDTH = 600;
int SCREEN_HEIGHT = 600;

int main(int argc, char* args[]) {
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
        cout << "Video init failed" << endl;
        return 1;
    }

    //Creates the actual SDL-window and stores it in the m_window variable.
    m_window = SDL_CreateWindow("Marko Beocanin SDD Project",
    SDL_WINDOWPOS_UNDEFINED,
    SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT,
            SDL_WINDOW_FULLSCREEN);

    //Error-checking method that determines if SDL could not create a window - returns false if unsuccessful.
    if (m_window == NULL) {
        cout << "Window Creation failed" << endl;

        SDL_Quit();
        IMG_Quit();
        return 2;
    }

    //Creates an SDL-Renderer: a tool used to actually draw objects on the Window
    m_renderer = SDL_CreateRenderer(m_window, -1, 0);

    //Error-checking method that determines if SDL could not create a renderer - returns false if unsuccessful.
    if (m_renderer == NULL) {
        cout << "Renderer creation failed." << endl;
        SDL_DestroyWindow(m_window);
        SDL_Quit();
        IMG_Quit();
        return 3;
    }

    SDL_Surface *tmpSurface = IMG_Load("img.png");
    playerTex = SDL_CreateTextureFromSurface(m_renderer, tmpSurface);
    SDL_FreeSurface(tmpSurface);

    SDL_RenderClear(m_renderer);
    SDL_RenderCopy(m_renderer, playerTex, NULL, NULL);
    SDL_RenderPresent(m_renderer);

    SDL_Delay(2000);
    SDL_DestroyWindow(m_window);
    SDL_Quit();
    IMG_Quit();


    return 0;
}

1 Ответ

0 голосов
/ 28 апреля 2018

Проблема, с которой я столкнулся, была результатом того, что я использовал неправильную библиотеку SDL_image - я использовал x64 вместо x86, что означало, что она сама по себе не выдавала ошибку, просто не работала должным образом!

...