SFML community forums
Help => Graphics => Topic started by: nisse pisse on June 01, 2010, 09:29:32 pm
-
Hello.
So i want a scrolling background. I get the background to scroll fine there is just one problem, there is a pixel gap.
http://data.fuskbugg.se/skalman01/-help.png
sf::Sprite bg1(background);
sf::Sprite bg2(background);
int bgheight;
bgheight = 1904;
bool bgActive1;
bool bgActive2;
int bgPosition1;
int bgPosition2;
bgPosition1 = 799;
bg1.SetPosition(0,(bgPosition1-bgheight));
bgActive1 = true;
bgActive2 = false;
// Start the game loop
while (App.IsOpened())
{
if(App.GetFrameTime() < 0.0167){
Sleep((0.0167-App.GetFrameTime())*1000);
}
// Process events
if(bgActive1 == true){
bgPosition1 = bgPosition1 + 1;
bg1.SetPosition(0,(-bgheight+ bgPosition1));
}
if(bgActive2 == true ){
bgPosition2 = bgPosition2 + 1;
bg2.SetPosition(0,(-bgheight+ bgPosition2));
}
if((-bgheight+ bgPosition1) == 0 && bgActive1 == true){
bgActive2 = true;
bgPosition2 = 0;
bg2.SetPosition(0,-bgheight+ bgPosition1);
}
// if((-bgheight)+ bgPosition1 == 800 && bgActive1 == true){
// bgActive1 = false;
// }
if((-bgheight+ bgPosition2) == 0 && bgActive2 == true){
bgActive1 = true;
bgPosition1 = 0;
bg1.SetPosition(0,-bgheight+ bgPosition2);
}
// if((-bgheight)+ bgPosition2 == 800 && bgActive2 == true){
// bgActive2 = false;
// }
/ Clear screen
App.Clear();
if(bgActive1 == true){
App.Draw(bg1);
}
if(bgActive2 == true){
App.Draw(bg2);
}
if(bgActive2 == true && bgActive1 == true){
m++;
if(m == 5){
cout << endl << bgPosition1 << endl;
cout << bgPosition2 << endl;
}
}
// Draw the string
// App.Draw(Text);
// Update the window
App.Display();
}
return EXIT_SUCCESS;
}
The picture is 1904 pixels in the y axis
I dont see where my thinking fails...
-
Somebody please answer... I have this problem too, and I see no reason for it not to work. Does the SFML view operate in a different thread? Maybe I should just make my own view system in the same thread... Or is there a way to wait for the thread before the screen is redrawn?
-
This person (http://sfml-dev.org/forum/viewtopic.php?t=2417) was having the same problem as you. It seems that the solution is to sf::Image::SetSmooth(false) when loading it.
-
Yeah, I found it myself. Was just about to post about it.
Hopefully OP will have use of your answer.
-
Yes it was that "set smooth" was set to true... one might wonder why that is the defualt setup when it works so bad O_o
-
Yes it was that "set smooth" was set to true... one might wonder why that is the defualt setup when it works so bad O_o
It's a bug that's been fixed with SFML 2.
Smooth is the default because smooth image filtering is considered standard in most modern apps--ie non 8-bit games.