<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sun, 25 Jan 2004 14:59:19 +0000
From   : Richard Gellman <splodge@...>
Subject: Graphics Rendering in BeebEm

Hi

I'd like to collate opinion on dropping the old GDI interface for the 
graphics rendering of BeebEm. The problem is this:

The current BeebEm model involves a windows bitmap in memory, which 
realizes a pallette of 8 BBC Colours (Black, red, green, yelow, blue, 
magenta, cyan, white) and roughly 6 or so Windows colours used to 
display things like the FDC plugin in use, speed/FPS display, keyboard 
and disc LEDs, etc.At screen update time, this is stretch-blitted either 
directlt to the screen in non-directdraw mode, or into a DirectDraw 
surface representing the screen.

This is not only slow, but also results in a judder effect as the eye 
catches the screen in mid-update (no *FX 112/3 tricks for us). The 
better option (and the one favored by most DirectDraw users) is to use 
page flipping (A%=113:CALL &FFF4...). The DirectDraw subsystem takes 
care of keeping pointers in check, but stretch-blitting into the 
backbuffer is hideously slow. A direct blit speeds things up slightly, 
but results in an _interesting_ display...

To summarise all this, the ideal DirectDraw model interferes with the 
ideal GDI model. I would like to remove GDI (non-directdraw) support 
from BeebEm, and move to a more pure model, implementing a BBC Screen 
buffer (sans windows bitmap objet headers) and a custom-made blitter to 
get the data into a 32-bit backbuffer.

All of this does not affect the ability to do windowed mode, this 
feature would not be dropped.

So, after all this great long explanation, whats the general opinion on 
dropping GDI support?

-- Richard Gellman
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>