SFML community forums

Help => Graphics => Topic started by: Tiseno on November 06, 2012, 04:21:21 pm

Title: Sprite not showing when Shape are being drawn, SFML 2.0
Post by: Tiseno on November 06, 2012, 04:21:21 pm
I have a Texture which i load to a Sprite and i have 2 Shapes (In the attached code CircleShape but RectangleShape will result in the same error) and when i draw those 2 the sprite will show only the first frame. After the first frame the sprite will not be drawn any more. If i draw only one, the sprite will be drawn. If i draw two Shapes and then remove one of them to only draw one of them, the Sprite will not draw.

The code has some basic movement on the sprite and control of drawing the 2 Shapes or not to demonstrate the dissapearance of the sprite. Frameratelimit is set to 1 to show the first frame clearly. There is need for a "texture.png" to draw the sprite:
#include "stdafx.h"
#include <SFML/Graphics.hpp>

using namespace sf;

int main(){

    RenderWindow window(VideoMode(1400, 800, 32), "SFML FTW", Style::Default);
    window.setFramerateLimit(1);

    CircleShape fooShape(150.0f, 50);
    CircleShape barShape(50.0f, 30);
    fooShape.setPosition(100.0f, 100.0f);
    barShape.setPosition(0.0f, 0.0f);
   
    Texture aTexture;
    aTexture.loadFromFile("texture.png");
    Sprite aSprite;
    aSprite.setTexture(aTexture);
    aSprite.setPosition(1000.0f, 600.0f);

    bool drawFoo = false;
    bool drawBar = false;

    while(window.isOpen()){
        Event Event;
        while(window.pollEvent(Event)){
            if(Event.type == Event.KeyPressed){
                if(Event.key.code == Keyboard::A){
                    aSprite.move(-20.0f, 0.0f);
                }else if(Event.key.code == Keyboard::D){
                    aSprite.move(20.0f, 0.0f);      
                }else if(Event.key.code == Keyboard::W){
                    aSprite.move(0.0f, -20.0f);    
                }else if(Event.key.code == Keyboard::S){
                    aSprite.move(0.0f, 20.0f);      
                }else if(Event.key.code == Keyboard::O){
                    if(drawFoo) drawFoo = false;
                    else        drawFoo = true;
                }else if(Event.key.code == Keyboard::P){
                    if(drawBar) drawBar = false;
                    else        drawBar = true;
                }
            }
        }      
        window.clear(Color(200, 100, 40));
        if(drawFoo)
            window.draw(fooShape);
        if(drawBar)
            window.draw(barShape);
        window.draw(aSprite);
        window.display();
    }
    return EXIT_SUCCESS;
}

I'm using SFML 2.0, Visual C++ 2010 Express and my graphics card is a XFX Radeon 5750

EDIT: Updated the code according to the new build of SFML 2.0
Title: Re: Sprite not showing when Shape are being drawn, SFML 2.0
Post by: slotdev on November 06, 2012, 06:14:17 pm
What build of SFML are you using? How old is it, because I notice the case is not correct.

window.SetFramerateLimit(1);

is now:

window.setFramerateLimit(1);

...and many other things. So I guess you are using an old version?
Title: Re: Sprite not showing when Shape are being drawn, SFML 2.0
Post by: Tiseno on November 06, 2012, 08:05:45 pm
What build of SFML are you using? How old is it, because I notice the case is not correct.

window.SetFramerateLimit(1);

is now:

window.setFramerateLimit(1);

...and many other things. So I guess you are using an old version?

Correct, I was using an old version of SFML 2.0 and have now updated my library and changed the code accordingly, but the program behaves exactly the same...

Did you try my code, and if so, is it working like it should?
Title: Re: Sprite not showing when Shape are being drawn, SFML 2.0
Post by: cire on November 07, 2012, 12:05:27 am
Appears to be the same issue as http://en.sfml-dev.org/forums/index.php?topic=9561.0
Title: Re: Sprite not showing when Shape are being drawn, SFML 2.0
Post by: Tiseno on November 07, 2012, 01:30:49 am
Appears to be the same issue as http://en.sfml-dev.org/forums/index.php?topic=9561.0

Yes I saw that post but i only read the first page, it seems they discovered the problem with Sprite aswell, sorry for making the post, will report my new findings in that thread instead.