Interesting --
As mentioned above, some video cards (including mine)appear to be alternating between *two* backbuffers instead of using just one, resulting in flickering on those systems if you draw some background items just once. (See the example of the moving ovals above)
Now, on my own computer I could address this flicker issue by drawing a (static) background twice, flipping after each draw, so both backbuffers ended up with a copy, and then leave it alone from that point forward -- the result was a stable picture, no flicker.
Now, theorethically this (drawing twice) should be stable on both systems using one, and two backbuffers...
Unfortunately I ran into another exception:
This ran OK on both my own system (which uses two backbuffers), my secondary computer (which seems to use one), but when I tested it on a 3rd machine (2.7 GHz E-Machine, some integrated onboard video controller) it was still flickering like crazy.
Now, this is very weird...
I'm not doing anything special on certain frames, each loop the exact same graphic draw functions are called. All pure blitz, no direct OpenGL stuff.
The only things I can think of:
- Maybe it uses two backbuffers, one of which automatically erases itself? (possibly a driver bug/feature?)
- Maybe it uses more than two backbuffers? (A bit unlikely I think, especially since the flickering looks like it drops every other frame. If it would draw 2/3 or so, it should appear less transparent, more 'solid'.
Hopefully I can figure out what video chipset it's using, that info that may lead to some more pointers... In the meantime, this is a bit of an unfortunate turn of events since it appears that I still can't count on graphics remaining on the screen even after drawing them twice...
It looks like I may have to look into adding a 'compatibility mode' to the game I'm working on: Give the choice betweeb drawing just twice (faster), or draw the full background each frame.
Unfortunately doing so gives me about 3/4 of the framerate I can get without redrawing the background, which can be significant on a mid range computer system
No idea how widespread of an issue this is though, maybe/hopefully it's just an isolated issue.
I also vaguely remember reading something about how some OpenGL cards never save the backbuffer information, en always require a full redraw... Is this true, or am I imagining things? :-)
As mentioned above, some video cards (including mine)appear to be alternating between *two* backbuffers instead of using just one, resulting in flickering on those systems if you draw some background items just once. (See the example of the moving ovals above)
Now, on my own computer I could address this flicker issue by drawing a (static) background twice, flipping after each draw, so both backbuffers ended up with a copy, and then leave it alone from that point forward -- the result was a stable picture, no flicker.
Now, theorethically this (drawing twice) should be stable on both systems using one, and two backbuffers...
Unfortunately I ran into another exception:
This ran OK on both my own system (which uses two backbuffers), my secondary computer (which seems to use one), but when I tested it on a 3rd machine (2.7 GHz E-Machine, some integrated onboard video controller) it was still flickering like crazy.
Now, this is very weird...
I'm not doing anything special on certain frames, each loop the exact same graphic draw functions are called. All pure blitz, no direct OpenGL stuff.
The only things I can think of:
- Maybe it uses two backbuffers, one of which automatically erases itself? (possibly a driver bug/feature?)
- Maybe it uses more than two backbuffers? (A bit unlikely I think, especially since the flickering looks like it drops every other frame. If it would draw 2/3 or so, it should appear less transparent, more 'solid'.
Hopefully I can figure out what video chipset it's using, that info that may lead to some more pointers... In the meantime, this is a bit of an unfortunate turn of events since it appears that I still can't count on graphics remaining on the screen even after drawing them twice...
It looks like I may have to look into adding a 'compatibility mode' to the game I'm working on: Give the choice betweeb drawing just twice (faster), or draw the full background each frame.
Unfortunately doing so gives me about 3/4 of the framerate I can get without redrawing the background, which can be significant on a mid range computer system
No idea how widespread of an issue this is though, maybe/hopefully it's just an isolated issue.
I also vaguely remember reading something about how some OpenGL cards never save the backbuffer information, en always require a full redraw... Is this true, or am I imagining things? :-)