On Tue, 11 Feb 2003 voidstar@tin.it wrote:
>does anybody knows if and how can I do a thing like
>this in OpenGL?
>
>  unsigned char* pA000 = vga_getgraphmem();
>  pA000[pos] = color;
You can't (nor are you ever likely to be able to).
There are multiple problems with such a thing:
  1) The graphics card is HEAVILY pipelined during OpenGL
     operations - when you draw a polygon, it may not appear
     on the screen until several milliseconds later.  If you
     could just do raw screen accesses, who knows what partial
     junk you'd read.
  2) There is no guarantee that there *are* any pixels laid
     out simply in memory.  The if you are doing FSAA with the
     nVidia GeForce cards (for example), they are rending to a
     multi-sample buffer with up to four RGB samples per pixel.
     The new GeForceFX (if it ever appears) aparrently adaptively
     stores either whole pixels or partial sub-pixels depending
     on whether the pixel lies on the edge of a polygon or not.
  3) What about windows that are partially overlaid by other
     windows?
Basically, this has not been possible since maybe the second generation
of 3D graphics cards - and it's NEVER likely to be possible again.
The simplistic idea that one memory-location == one pixel == one
spot on the display is no longer valid with windowing systems,
3D and antialiasing.
Windowing systems could still emulate frame buffers for each window (I'm 
not sure but I think something like this is done in BeOS for 
BDirectWindow's or whatever they are called). But it's a different case 
when hardware 3D functions are used.
>With svgalib i can do this, but in OpenGL? Is there
>a way to access the screen like an array (not only 320x200,
>but also 640x480, etc.)
No...nor should there be.  Raw screen access died a couple of
generations of hardware ago - and I didn't shed a tear to see it
go!
I kind of miss that kind of do-it-yourself graphics programming that was 
standard in the "good old" days of DOS (well, at least there was no 
Windows to get in your way ;). I really miss the tweaks and 
optimizations that were made to get reasonable frame rate even for 2D 
games.