Software Rendering?

Started by
10 comments, last by RS_Hybrid 20 years, 9 months ago
I was just looking around the forum (specifically Graphics Programming & Theory) and i was wondering, when you learn either DirectX or OpenGL, are you really learning to program? I mean i know you can make games using either API with C++ or another language, but are you really learning to program? Because i''ve noticed that a lot of those (top notch guys) in the Graphics Programming room are making software renderers. My second question, what is a software renderer? Although i''ve looked around and read a little bit about it, i''m still slightly confused, i''m not sure if its a graphics API that you make or if its just the tool that you make in order to handle all of the graphics stuff that you''ll be using to render all graphics on the screen. Any insight will be greatly appreciated no theory`
no theory`
Advertisement
I think I can answear your first question: no, you ain''t learning to program using DX or OGL. You are learning the API.

In order how to learn to program you have to learn a programming language like C, C++ or perhaps Java. You will use that language later in your API code.
----------------------------------------------------------------------------------------------------------------------"Ask not what humanity can do for you, ask what you can do for humanity." - By: Richard D. Colbert Jr.
A software renderer is like making your own graphics api which is pretty much pointless these days if you are making a game.

Firstly, it is no easy task to make a software renderer(Im sure Microsoft will agree with this, it took them several efforts/years to get DirectX to where it is today. Im sure you can imagine what it will take a small development team to do the same). Even if you do make a sofware renderer as good as DirectX / OpenGL, it will be way slower. DirectX can render in software mode when necessay but just like OpenGL, it is hardware accelerated. It is highly unlikely anyone without a huge team and big funding could make a graphics api which is as advanced and as fast as DirectX /Opengl.

Even if they did, they would have to approach all the major hardware vendors out there and try and convince them that they should implement the api in their gfx cards. Hardware accelerated means the graphics card does most of the graphical work involved in producing the image on screen.

It was common for game companies to make software renderers with enough features to display viewable graphics at playable framerates. The reason was because in the past most PC''s did not have 3d gfx cards. Today it''s a different situation and you should stick to OpenGL/Direct3d for your 3d rendering needs.
quote:Original post by GamerSg
A software renderer is like making your own graphics api which is pretty much pointless these days if you are making a game.

Firstly, it is no easy task to make a software renderer(Im sure Microsoft will agree with this, it took them several efforts/years to get DirectX to where it is today. Im sure you can imagine what it will take a small development team to do the same). Even if you do make a sofware renderer as good as DirectX / OpenGL, it will be way slower. DirectX can render in software mode when necessay but just like OpenGL, it is hardware accelerated. It is highly unlikely anyone without a huge team and big funding could make a graphics api which is as advanced and as fast as DirectX /Opengl.

Even if they did, they would have to approach all the major hardware vendors out there and try and convince them that they should implement the api in their gfx cards. Hardware accelerated means the graphics card does most of the graphical work involved in producing the image on screen.

It was common for game companies to make software renderers with enough features to display viewable graphics at playable framerates. The reason was because in the past most PC''s did not have 3d gfx cards. Today it''s a different situation and you should stick to OpenGL/Direct3d for your 3d rendering needs.


Maybe not, but it''s A.) a good learning experience, and B.) can be custom built to support only things you need, hence be faster than an all purpose software engine so it could make it playable on a machine that it wouldn''t have been playable on if you didn''t write it. I have personally written more than one software engine, and it''s speed is plenty fast for what it was meant for and was very small, could run on more than a single OS (like the one I wrote, which had no 3d hardware support), so it was well worth the effort for me . Oh, and it only took less than a week to write from scratch (although, not in a completely re-useable manner).
*Ahem ahem* What about software renderers on consoles ?? DirectX and OpenGL aren''t there anywhere any time.
Kodawari...
quote:Original post by Haido
*Ahem ahem* What about software renderers on consoles ?? DirectX and OpenGL aren''t there anywhere any time.


*Ahem ahem* What about f.e. XBox?
quote:Original post by Haido
*Ahem ahem* What about software renderers on consoles ?? DirectX and OpenGL aren''t there anywhere any time.


The only console currently out (new console that is) that would require a software renderer would be the Gameboy advance.

Xbox, Ps2, and Gamecube may not have API''s exactly but they do have sub-systems which allow you to access the 3d rendering hardware directly and because everything is accellerated in 3d hardware you can not consider this to be a "software renderer".
quote:Original post by Android_s
I think I can answear your first question: no, you ain''t learning to program using DX or OGL. You are learning the API.

In order how to learn to program you have to learn a programming language like C, C++ or perhaps Java. You will use that language later in your API code.


I have learned C++, not all of it, but enough to understand API''s like Win32-DX-OpenGL. I was just wondering if learning DirectX teaches you any programming at all.. guess thats a no no..It''s still cool to use its features, but thanx for the comments i do appreciate it.

Maybe sometime in the future I''ll write my own software render just to learn how everything works. Maybe not to get something better then the DirectX/OpenGL API but just to learn how stuff work under the hood. Besides the idea of having games run when hardware accelaration isn''t present actually seems interesting, cause as you said, the software''s doing the work right?

no theory`
no theory`
I''m just curious, but if i were to write my own software rendering program, would i simply use C++ and it''s libraries? or is there something else that i''d need as well. I''m assuming that C++ supports most features to make a software renderer right?

no theory`
no theory`
I will code a SW renderer later this year if plans go to reality, I have done this a couple of times before, and the basic thing why I want to do that is because I want to have fun.

I don''t neccessary need to push X millions triangles to think that I''m having a good time, pushing 5 triangles where I know every pixel is out there for a reason, and doing everything by myself, that''s my reward.

Agreed, I don''t plan to try to make some cool game demos which I want to send in to a publisher/gamestudio to get me a job (the chance is so little you succeed with such a task anyway).. I''m just programming for the fun of it, and I don''t think programming against an API is more fun than doing every part of the pipeline for yourself.

There is no limits except speed when you make a software renderer... and I don''t count time when I''m making hobby projects since I''m basicly doing it to spend time :-)

Same goes for audio. While I''m using fmod I''m eager to learn how to write a softsynth. However, I''ve always been more interested in the pixels than in the samples anyway :-)

Just some ideas... if it''s hobby programming, do what you think is fun, not "best" because some other dudes think so.

I''m not telling you software rendering must indeed be more fun than programming opengl or directx, I just think so.

Just my .02
Albert
-------------------------------------------http://www.thec.org

This topic is closed to new replies.

Advertisement