Where can I go to learn about very basic PC graphics? From the ground up? No libraries etc. Just start learning how to do software stuff without anything fancy like Open GL etc.
Printable View
Where can I go to learn about very basic PC graphics? From the ground up? No libraries etc. Just start learning how to do software stuff without anything fancy like Open GL etc.
Read many different Video cards specifications( if you can find them ), and make an OS that actually lets you use them without a driver. :p
Alternatively on Linux, open and write to the framebuffer device.
Bah, of course, how could I forget.Quote:
The OP specifically said "No libraries". That includes the OS itself...
"If you wish to make a graphics pie from scratch, you must first invent the universe."
Assuming you are on windows...
Start with ... TheForgers tutorial
Then head over to ... MSDN Graphics
And also ... GDI Tutorial
But you should note that you're not going to get much in the way of graphics power or performance from the OS's built in API... you're going to have to go with DirectX, OpenGL or some other library to really get the full benefit.
On linux... Well, I'm sure someone can give you some links to try...
And of course there's always Google...
There are 4 (3?) layers when it comes to graphics.
Hardware --> Drivers --> Library --> Application.
You are obviously not going to make hardware, nor write drivers, nor are you going to talk directly to the drivers, so that leaves the application.
The library is DirectX/OpenGL/Win32 API/Linux API/Unix API/etc.
Any game engine will lie on top of the library, so you will probably want to avoid that.
However, note that OpenGL and DirectX do not wrap Windows API. They talk directly to the drivers.
So, you will basically want to learn OpenGL/DirectX.
Using Win32 API is both silly and stupid. GDI isn't hardware accelerated, it's deprecated and everything is moving towards DirectX in Windows.
So, you now have enough information to know where to begin, at least, I believe.
Thank you guys. Just wanted to start very basic. Like learning how to make the screen change color in C or display a bitmap. Stuff like that. Baby steps.
Unfortunately there really is not a way to start at the basic level anymore. In the old DOS days you could start from scratch but not in any modern OS. I can only recommend you go to Amazon and purchase a DirectX or OpenGL book. Whichever API you choose, DirectX or OpenGL, is completely up to you and both have their advantages and disadvantages. I would recommend a book but I do not want to steer you towards any API here. I can say learning GDI and GDI+ will get you nowhere and I do not recommend using those to learn about graphics since the design and usage of those systems is completely different than any graphics API you will use.
Yep, the real horsepower is in Direct X, OpenGL... maybe SDL...
Still, Learning a bit of GDI is not a bad thing. There may come a time it's handy for debugging an older program or doing your own owner-drawn menus and things.
At least for me, the SDL strikes a nice balance. You can read and write pixels directly like you might have done with DOS. You can stay safely in 2D and play around with basic input and output. And you can also just load images and display them and plug in OpenGL once you've learned how the SDL works and want to use it to build something larger. Something to consider, at least. The SDL is cross-platform and available at Simple DirectMedia Layer.
SDL was how i started out, and for C i guess it really is the best way if one is not into straight OpenGL/DirectX.
However, for C++, SDL is hopelessly cumbersome. Instead, i recommend SFML.
It's completely object oriented, and there are ports for many other languages. It wraps OpenGL and thus is fully hardware accelerated, unlike SDL which runs on the CPU (unless one uses the OpenGL mode, in which case you have to write your own OpenGL code anyways, which defeats the purpose), as such SFML is many many times faster than SDL, and it is, if possible even simpler to learn and use than SDL is. It even supports stuff like shaders without having to write a single line of GL code (Atleast it used to do, i'm not sure if it still does.)
There are a bunch of tutorials and a step-by-step guide to getting it to work with a bunch of different IDEs and compilers. Oh, and it's ofcourse avaliable for all major platforms.
Sorry for the shameless plug, i'm not affiliated with the project, i just love using it.
access the graphics memory with out operating system.
study about graphic card.
Right. As if that's going to happen.
It's impossible to gain direct access to video memory from user mode unless a driver allows it - which it doesn't.
Something to add on the GDI front: technically it can be hardware accelerated. When a graphics driver is loaded it is queried for a few function pointers for ops such as BitBlt, drawing lines, etc. If the driver does not supply a given function it is mapped to the default software-based function.
Those of you who weren't in your mother's dreams/nightmares in 1992 will recall the emergence of "Windows accelerator" cards. This was the first instance of graphics drivers providing hardware-specific functions for GDI. Under Windows 3.1, no less! :cool:
However, since Vista I believe that this is no longer used. All GDI drawing ops are in software.
Oh I was in her nightmares and her dreams since I graduated high school that year. I had one of those early Windows accelerator cards. At the time I was reading books that were talking about using specific pieces of hardware to do graphics both 2D and 3D. I thought to myself that one would never buy a card that just handled graphics. Oh how wrong I was.Quote:
Those of you who weren't in your mother's dreams/nightmares in 1992...
Do you know if this is true for GDI+?Quote:
ever, since Vista I believe that this is no longer used. All GDI drawing ops are in software.
GDI+ is not hardware accelerated under neither Vista nor 7.
GDI is partially accelerated in 7, but is not accelerated in Vista.
Source: Wikipedia