Re: Physical screen memory


Richard Russell
 

---In bb4w@yahoogroups.com, <eatondrink@btinternet.com> wrote :
> I can not find a way in bb4w to reproduce this (it was how I generated quick coloured
> graphics without the need for assembly language), can anyone help?

You can certainly create a memory-mapped 'screen' that you can draw into using direct memory writes (e.g. using indirection) but it will only ever be a 'backbuffer', not the physical screen memory (which is not accessible to a user-mode program). Windows will 'blit' that backbuffer to the physical screen on demand.

BB4W comes with an example program which does exactly that: MANDEL.BBC. Although in the case of that program the memory-mapped display buffer is written using assembler code, it need not be. You could instead write to the memory using code such as ?xxxx=c% and it would work.

One of my recent projects annotates the output from an HD (GigE) camera by superimposing graphics drawn in exactly this way - and it's a time-critical program that runs at 60 frames-per-second full-screen! Here is an extract from the code of that application to demonstrate that what you propose is an entirely practical technique when the amount of graphics to be drawn isn't too great (this is drawing a pair of 'cross hairs'):

FOR P% = P%(I%)-MaxRadius% TO P%(I%)+MaxRadius%
?P% EOR= &FF
NEXT
FOR P% = P%(I%)-MaxRadius%*HIMAGE TO P%(I%)+MaxRadius%*HIMAGE STEP HIMAGE
?P% EOR= &FF
NEXT

Richard.

Join bb4w@groups.io to automatically receive all group messages.