GUI library for D

Nick Sabalausky a at a.a
Wed Apr 6 14:33:38 PDT 2011


"Dmitry Olshansky" <dmitry.olsh at gmail.com> wrote in message 
news:inik5u$n13$1 at digitalmars.com...
>
> Mmm, am I the only one wondering where did you guys get SetPixel in OpenGL 
> ?  It's must have been GDI.
> At any rate OpenGL and DirectX is all about sending commands and data back 
> and forth between  CPU and videocard (well, there is driver involved, 
> doing some translation into specific chip's commands and such).
> So no, SetPixel couldn't exactly get inlined just because you can't access 
> video ram without jumping through some hoops:  OS -> HAL-> 
> driver ------->PCI-E or AGP -> ... -> video RAM.  OpenGL and DirectX 
> subsytems bypass some of these additional hoops, but still you have to 
> send the data down this route. That's why it's usually used for massive 
> asynchronous transfers.
> E.g. every time you need GetPixel you send "read pixels command" and wait 
> utill all the data already streamed in is processed and stored in the 
> video RAM, then it reads framebuffer and sends you results (effectively 
> stalling all it's processors).
> So for "straight" setpixel/putpixel drawing, software render + blit to 
> screen is the way
> (but I  doubt you need only pixels, and going futher inevitably shows why 
> software render sucks).
>

What I was thinking of was using some set/get pixel stuff to draw to 
system-ram and then use OpenGL/DirectX to transfer it to video-ram when done 
(I have no idea which way Adam was doing it).

And yea, you're right that software rendering sucks performance-wise. But 
the main orginal point was t have a way to just toy around with image 
drawing in an easy classic DOS-style. From there, my thoughts were "ok, how 
to make this approach as close to being efficient as it can realistically 
get?"





More information about the Digitalmars-d mailing list