Reputation: 33
Currently trying to display a BMP file on a window through SDL 2
This is my main.cpp file:
`#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;
}`.
This is my pch.H file,which was mentioned above in the code:
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 file:
#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;
};
When i run this program,the window appears but with no image. What am i doing wrong here?
Upvotes: 0
Views: 167
Reputation: 26365
I think the problem is in your screendisplay()
function:
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;
};
You're doing an assignment rather than a comparison. You should turn up your compiler warnings so it catches this.
Upvotes: 1