SDL for Be is slow as snot (1.1.3, compared to the windows
implementation); which is a shame, because I do 99% of my development
under Be. As for full screen being SLOWER than windowed, I don’t think
that’s the case. I think they are equally slow, but in full screen you
are more likely to notice things like tearing (I just did some tests
This is due to the use of DrawBitmapButTakeYourTime() routine for
The BeBook, BDirectWIndow page:
“The key to the BDirectWindow class is the DirectConnected()
So why doesn’t the Be implementation implement this function???
I’m not sure - I was wondering the same thing when I first started
rummaging through the code. I suspect this is why there are crashes
when eg. switching between windowed and fullscreen.
Implementing BDirectWindow::DirectConnected will give an appreciable
speed increase for windowed mode, but hardware acceleration for full
Why would it be faster? DirectConnected() is a means to allow syncronisation
between the screen and the drawing thread, ie. you can draw, you can’t
draw, the screen has just changed etc.
screen is a necessity. For 2D, we absolutely need to start using
BWindowScreen for a slew of reasons. Or two. 1) BWS gives access to
"hooks" which allow for hardware blitters, solving the "Be’s SDL is
Yup (although I don’t think all drivers support this).
slow" problem. 2) BWS doesn’t move other windows to fit the new
resolution like BDW does (Workspaces is in the lower right hand corner
of your screen right now, waiting to get moved by evil SDL).
Yeah, that’s annoying.
First you said that the new OGL implementation is based around
BDirectWindow (which is good), then you suggest that we move SDL AWAY
from using BDW (which is bad)… Big problem. Should we just create a
No, I suggested using driver code that best suits the type of screen being
used. If you want full screen use BWindowScreen, if you want fullscreen
with OpenGL use a fullscreen BDirectGLWindow (in theory, if you want
OpenGL you won’t be quite so bothered about 2d speed).
second video device? One that uses the polymorphized BDW/BWS hybrid,
intended for 2D use, then a BDirectGLWindow using device? The 3D device
My idea was to decide the best display method for according to the user’s
If the user wants windowed display but no OpenGL, use a BDirectWindow.
If the user wants windowed display but OpenGL, use a BDirectGLWIndow.
If the user wants full-screen but no OpenGL, use a BWindowScreen.
If the user wants full-screen with OpenGL, use a full-screen BDirectGLWindow.
This way we can have optimal screen updates for each type of display.
The difficulty will come when the user wants to switch between windowed
and full-screen, since the current display object will need to be deleted then
the appropriate new one created.–