Sign in to follow this  
hufeilxl

what's the different between software engine and hardware engine ?

Recommended Posts

hufeilxl    122
I am studying according to the software engine, but don't know according to the software engine with have according to the hardware engine what concrete differentiation, can someone tell me?

Share this post


Link to post
Share on other sites
MetalRob    138
Quote:
Original post by hufeilxl
I am studying according to the software engine, but don't know according to the software engine with have according to the hardware engine what concrete differentiation, can someone tell me?


No offense, but I'm not sure what your actually asking.

Share this post


Link to post
Share on other sites
CTar    1134
I'm not actually sure what you, mean, but I think it means what the difference between a software and hardware engine is.

You probably mean a graphics engine, here the difference is that the software engine uses the CPU, while the hardware engine uses the GPU (well also the CPU, but the GPU for many tasks). You have a GPU and a CPU, the CPU (also called the processor) contains "general purpose" instructions, while the GPU's instructions is specialized for graphics.

So the GPU can often compute graphics stuff faster, also it is a way to remove some of the work from the CPU. When doing calculations on the CPU you also have to send your data to the GPU so that it can use them.

Some years ago it was not common to have a graphics accelerator, so you had to do the calculations on the CPU. Today there is no reason (when working on games for the PC) to not use the GPU and take advantage of hardware acceleration. When working on games for cell phones for example you also need to use a software graphics engine since it, like old computers, can't do hardware acceleration.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Alternately, the question may be about engineer_ing_, meaning 'software engineering' vs 'hardware engineering'. In this case, the difference is quite large. Software engineering is about creating software in a manner that is robust (can withstand faulty input, output, and other things very well - meaning it won't crash if you click the wrong button), flexible (can suit many purposes), maintainable (has well organized code that is not difficult to edit), usable (has an interface that is self-consistant and that exposes the functionality in an easy to understand manner), and meets many other such goals.

Hardware engineering is similar in that you're creating something, but instead of software you're creating hardware. Depending on the context, you'll probably be designing digital hardware, but you'll also have to deal with the analog parts that assist the digital hardware. Digital hardware can be designed almost in the same way software can - typing code into an editor. The main difference is in the goals - hardware design takes things like power consumption (power is better), fitness for particular purpose (a specialized chip can often be orders of magnitude faster than a general chip), and other such things that aren't as relevant to software. I'm not a hardware engineer so I can't explain it's goals as well as I can those for software engineering, and I may be completely incorrect on the few I've vaguely stated.

-Extrarius

Share this post


Link to post
Share on other sites
hufeilxl    122
Thank you ,CTar, I have understanded your meaning ,but I also want to ask a question, I want to develop a network game ,but I don't know how to write zhe
hardware engine . I have studied zhe book <<Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization (Paperback)>> write by André LaMothe . I felt zhe software engine in zhe book didn't not satisfy me.I want to
do a good engine .how to do next? help me !

Share this post


Link to post
Share on other sites
CTar    1134
Quote:
Original post by hufeilxl
Thank you ,CTar, I have understanded your meaning ,but I also want to ask a question, I want to develop a network game ,but I don't know how to write zhe
hardware engine . I have studied zhe book <<Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization (Paperback)>> write by André LaMothe . I felt zhe software engine in zhe book didn't not satisfy me.I want to
do a good engine .how to do next? help me !


To do a hardware accelerated engine you need a graphics API(application programmer interface) which is a bunch of functions, classes and macros you use to communicate with the graphics hardware. The most popular are Direct3D and OpenGL. Direct3D is Windows (and XBox I think) only so if you want to be cross-platform you need to use OpenGL or support both. There is lots of books on using Direct3D and/or OpenGL, you could do a search on Amazon, or look for tutorials on the Internet, I heard NeHe is a good place to begin learning OpenGL, but I have personally never used it. If you have read (and understood most of) "Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization" then you should definetley be ready to learn a graphics API which you will probably find much simpler.

If you want a good book on Direct3D I can recommend: Introduction To Game programming with DirectX

When you have learned to use a graphics API you will need to learn a lot more to program a game engine, there is also input handling, audio and physics, then you also have to be a pretty experienced programmer to actually create the engine.

There are really many kinds of engines, graphics engines take care of the graphics, while input engines take care of the input handling, you use the term game engine to describe an engine which does all the lower level stuff like graphics, input, audio, batching etc. So you won't need physics, audio and input if you are only programming a graphics engine, but you will if you are programming a game engine. The only books I know on game engines is:
3D Game Engine Architecture
3D Game Engine Design
The rest focuses on a specific subject, like scripting, audio etc.

So if you want to program a game engine you'll need to learn a lot and I don't think a single book will be enough.

Share this post


Link to post
Share on other sites
hufeilxl    122
CTar ,Thank you very much, I have understood your meaning ,I will read some books about Dircetx and OpenGL(Infact, I know some functions and classes about Dircetx, but i am not accomplished in Directx). I still have a question ,The question is that , Directx inculdes some ApI , which part of zhe Dircetx ApI is uesful to make my hardware engine ? how to let my software engine do hardware acceleration ?
<<Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization >> only teach me how to write a software engine , zhe softwre engine in the book only use CPU cann't use GPU ,but it includes DirectDraw.lib\DirectInput.lib\DirectSound.lib , why zhe engine in zhe book cann't do hardware acceleration . which DirectX ApI should be into zhe software engine ?

Share this post


Link to post
Share on other sites
KulSeran    3267
Im not sure about DirectX, but OpenGL tries to always use hardware acceleration.
I think DirectX has some option to let you disable hardware acceleration, but by default accelerates anything it can.
So all you have to do is use the API to draw stuff, and the API takes care of doing it as fast as it can.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this