Advertisement

3d graphics in Linux

Started by December 01, 2005 02:22 PM
10 comments, last by M2tM 19 years, 1 month ago
hi dears; I'm a newcomer to Linux world and in spite of years of experience with windows & DX programming, it seems that I should work with Linux (and consequently GL), where should I start from? how much time does it take for me to adopt to Linux world, what are your tips for making this path smoother for me? and how much time does it take to port a DX based engine to Linux, should I necessarily use OpenGL? isn't there another option? thanks in advance, any help would be highly appreciated www.galaxyroad.com PowerX Engine
Visit galaxyroad.com which soon will have english contents too

OpenGL deals ONLY with the rendering. It doesn't deal with sound, windowing, or anything else relating to games. There are platform specific commands (wgl on windows, glx on X) that you'll need to use.

No matter what you do, you'll want a copy of the red book. Get something currennt.

The book Programming OpenGL for the X Window System can help you with those OS specific things. It focuses a bit on GLUT, which is basically a toolkit to handle window management.


You'll probably end up using OpenAL for sound.


If you're like most people and you don't want to deal with all that stuff, there is an easier way.


SDL is great for cross platform work, including running on X on Linux. It prevents you from having to muck about with the platform specific stuff. It handles windowing and sound. And it can give you OpenGL windows.

You'll still want a copy of the red book if you decide to go that route.

frob.

Advertisement
thanks frob, it helped a lot, I'll go for the stuff, but I still have another big question in my mind; is Linux a graphics oriented system? i.e. can I expect the same 3d performance in Linux as Windows? or even higher?
Visit galaxyroad.com which soon will have english contents too
The 3d performance you get vs the same thing in Windows, depends largely on the quality of the driver.

Apparently NVidia's is quite good and should give equivalent performance to the Windows driver on most hardware - but this is by no means guaranteed.

It also depends on a zillion other factors so your mileage may vary.

There are animation companies using Linux desktops for animation / visualisation applications (for instance animators using Softimage etc) where 3d performance really matters. But they probably ensure that they're running very specific hardware on them where they know the drivers work well.

Mark
Quote: Original post by markr
There are animation companies using Linux desktops for animation / visualisation


Unix is a very friendly to networked, distributed systems. Linux is free, easy to operate and program and setup for large scale rendering farms and 'desktop' distributed graphics processing and animation.



Quote: Original post by Anonymous Poster
Unix is a very friendly to networked, distributed systems. Linux is free, easy to operate and program and setup for large scale rendering farms and 'desktop' distributed graphics processing and animation.


AFAIK the server farm rendering the effects in the Lord of the Rings trilogy ran linux. And I think the same thing is true for the Star Wars prequels. Even Pixar (Steve Jobs' company) runs linux on their server farm (though the artists/creative people do their work on OS X). Though none of these are realtime applications like a game.


As for 3D games on linux, you're pretty much stuck with OpenGL unless you want to write a 3D software renderer. Personally i'd recommend using SDL with OpenGL, but you have other options: Qt, GTK, and Java are possibilities.

Also, I've had good experiences with the Nvidia drivers, but they're a bit of a pain to set up if you don't know what you're doing.
Advertisement
You'll also want a scriptable cross-platform build system. Writing makefiles by hand will become quite irritating and troublesome if your project is large.

Autoconf, automake and libtool (i.e. "the autotools") have excellent scriptability and ability to adapt to any unix environment. They are, however, very complicated and quite a few newcomers here have given up on learning them. Many people like something simpler like scons.

If you intend to distribute the source of your project for people to build themselves, a well written autoconf/automake system will be by far the most convenient for end users because it adapts well to their systems. Custom makefiles and some more rigid build systems need manual tweaking if you want to change things like library and install paths, which may not be a problem if you only distribute binaries.

An additional note if you intend to distribute binaries only: you will encounter people who will complain very loudly about your project not being open-source. Try to ignore them. They are, fortunately, the minority. The majority of Linux users do consider open-sourceness to be a good feature (and have valid arguments why) but will still use a good program or game even if it's not.
Original post by Will F
Quote: Original post by Anonymous Poster
As for 3D games on linux, you're pretty much stuck with OpenGL unless you want to write a 3D software renderer. Personally i'd recommend using SDL with OpenGL, but you have other options: Qt, GTK, and Java are possibilities.


Why do you make it sound like it's such a terrible thing? OpenGL is the only real 3D API for serious, commercial grade hardware accelerated graphics. If you are inferring to some other inferior choices that might be available, they are really poor rip-offs of the product of people who actually knew, designed and implemented real super-computers and massively parallel systems from which 3D graphics as we have it today has it's roots in.

Quote: Original post by Will F
Quote: Original post by Anonymous Poster
As for 3D games on linux, you're pretty much stuck with OpenGL unless you want to write a 3D software renderer. Personally i'd recommend using SDL with OpenGL, but you have other options: Qt, GTK, and Java are possibilities.


Why do you make it sound like it's such a terrible thing? OpenGL is the only real 3D API for serious, commercial grade hardware accelerated graphics. If you are inferring to some other inferior choices that might be available, they are really poor rip-offs of the product of people who actually knew, designed and implemented real super-computers and massively parallel systems from which 3D graphics as we have it today has it's roots in.


Sorry, that wasn't my intention. I use OpenGL and I am perfectly happy with it.

But saying OpenGL is the only "real 3D API" is perhaps a bit misleading. Take a look at the latest and greatest games for windows (FEAR for example), and tell me with a straight face that they don't have "serious, commercial grade hardware accelerated graphics".
thanks for your helpful replies, as I understood from your posts, the way to 3d development in non-windows systems (including Linux) is not as straight-forward as in windows, and I should work much harder, I'll be glad to here more from you, I suppose GL is still the best option available there, but SDL is something questionable, how can I find SDL? is it a library?
Visit galaxyroad.com which soon will have english contents too

This topic is closed to new replies.

Advertisement