SFML community forums

Help => Graphics => Topic started by: Viped on November 20, 2014, 03:48:32 pm

Title: I am getting only white screen when rendering
Post by: Viped on November 20, 2014, 03:48:32 pm
Hi all,

I am getting only white screen when rendering "outside" of main loop. I have Renderer class where I have render method and I pass sf::renderWindow by reference to there.

Renderer.cpp
#include "Renderer.h"

#include <iostream>

Renderer::Renderer() {
        sf::Texture tex;
        if (!tex.loadFromFile("background.png")) {
                std::cout << "Error loading file \"background.png\"" << std::endl;
        }

        _background.setTexture(tex);
        std::cout << _background.getTexture() << std::endl;
}

void Renderer::Render(sf::RenderWindow &window) {

        window.clear();
        window.draw(_background);
        window.display();
}

Renderer.h
#ifndef __ImpossiblePlatformer_Renderer_h__
#define __ImpossiblePlatformer_Renderer_h__

#include "SFML\Graphics.hpp"

class Renderer {

public:
        Renderer();
        void Render(sf::RenderWindow &window);

private:
        sf::Sprite _background;
};

#endif

And lastly main.cpp
#include "SFML\Graphics.hpp"

#include "Constants.h"
#include "EventHandler.h"
#include "Renderer.h"
#include <iostream>

int main() {

        sf::RenderWindow window(sf::VideoMode(1280, 720), "Impossible platformer VERSION");

        EventHandler eh;
        Renderer renderer;

        while (window.isOpen()) {
                eh.LoopAllKeyEvents(window);

                renderer.Render(window);
        }

        return 0;
}
Title: Re: I am getting only white screen when rendering
Post by: Laurent on November 20, 2014, 04:16:15 pm
http://sfml-dev.org/tutorials/2.1/graphics-sprite.php#the-white-square-problem
Title: Re: I am getting only white screen when rendering
Post by: Viped on November 20, 2014, 04:26:26 pm
Nice. Thanks. That even makes sense now.
Title: Re: I am getting only white screen when rendering
Post by: Nexus on November 20, 2014, 05:17:00 pm
By the way:

#ifndef __ImpossiblePlatformer_Renderer_h__
These identifiers are forbidden by the C++ standard. Everything beginning with 2 underscores or underscore and capital letter is reserved for the implementation.

#include "SFML\Graphics.hpp"
You should use forward slashes for portable code, and <> brackets for libraries.
Title: Re: I am getting only white screen when rendering
Post by: Jesper Juhl on November 20, 2014, 05:35:05 pm
That's not even all. Any identifier containing two consecutive underscores is reserved IIRC, and there are a few other obscure cases as well; but I can't remember them - it's been a while since I last checked the standard.
Title: Re: I am getting only white screen when rendering
Post by: Viped on November 21, 2014, 08:36:42 am
Thanks for all the suggestions. I haven't really ever coded anything in C++, but because it's industry standard I decided to give it a try, so all tips are more than welcome.