SDL 2 бьющий файл BMP - PullRequest
       39

SDL 2 бьющий файл BMP

0 голосов
/ 13 декабря 2018

В настоящее время пытаюсь отобразить файл BMP в окне через SDL 2

Это мой файл main.cpp:

  `#include "pch.h"
   #include <iostream>
   #include<SDL.h>
   using namespace std;
   int main(int argc, char* args[])
   {
     bool run=true;
     sdl a;
     if (a.init() == false)
      {
        cout << "SDL not working" << endl;
        return 0;
      }
      else
        if (a.screendisplay() == false)
        {
            cout << "Enable to open the window" << endl;
            return 0;
        }
        else
             if (a.loadmedia() == false)
             {
             cout << "Unable to load the image" << endl << SDL_GetError()<<endl;
              return 0;
             }
             else
              a.imageprocessing();
          SDL_Delay(2000);
          a.quit();
    return 0;
}`.   

Это мой файл pch.H, о котором упоминалосьвыше в коде:

class sdl
{
public:
    bool init();
    bool screendisplay();
    bool quit();
    bool loadmedia();
    bool imageprocessing();
private:
    SDL_Surface *gsurface = NULL;
    SDL_Window * Window = NULL;
    SDL_Surface * screenSurface = NULL;


};

Файл Pch.cpp:

 #include "pch.h"
using namespace std;
bool sdl::init()
{
    bool sucess = true;
    if (SDL_Init(SDL_INIT_VIDEO) <0)
    {
        cout << "SDL not Working properply" << endl;
        return false;
    }
    else return true;
};
bool sdl::screendisplay()
{
    bool sucess;
    Window = SDL_CreateWindow("SDL Tutorial", 0, 0,640, 280, SDL_WINDOW_SHOWN);
    if (Window = NULL)
    {
        return sucess = false;
    }
    else
        screenSurface= SDL_GetWindowSurface(Window);
        return sucess = true;
};
bool sdl::loadmedia()
{
    bool success = true;
        gsurface = SDL_LoadBMP("asd.bmp");
        if (gsurface == NULL)
        {
            success = false;
        }
        return success;

};
bool sdl::imageprocessing()
{
    bool success = true;
    if (SDL_BlitSurface(gsurface, NULL, screenSurface, NULL) < 0)
    {
        return success = false;
    }
    else
    SDL_UpdateWindowSurface(Window);
    SDL_Delay(2000);
    return success;
};
bool sdl::quit()
{
    bool sucess;

    SDL_DestroyWindow(Window);
        SDL_Quit();
        return sucess = true;

};

Когда я запускаю эту программу, появляется окно, но без изображения.Что я здесь не так делаю?

1 Ответ

0 голосов
/ 13 декабря 2018

Я думаю, что проблема в вашей screendisplay() функции:

bool sdl::screendisplay()
{
    bool sucess;
    Window = SDL_CreateWindow("SDL Tutorial", 0, 0,640, 280, SDL_WINDOW_SHOWN);
    if (Window = NULL) // <- Right here
    {
        return sucess = false;
    }
    else
        screenSurface= SDL_GetWindowSurface(Window);
        return sucess = true;
};

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

...