Which way to go in Linux 3D programming?
صفحه اصلي

Which way to go in Linux 3D programming?

I'm looking for some answers for a project I'm thinking of. I've searched and from what I understand (correct me if I'm wrong) the only way the program I want to make will work is through 3D application. Let me explain.

I plan to make a studio production program but it's unique in the fact that I want to be able to make it fluid. Let me explain. Imagine Microsoft's Surface program where you're able to touch and drag pictures across the screen. Instead of pictures I want them to be sound samples (wavs,mp3,etc). Of course instead the input will be with the mouse but if I ever do finish the project I would totally add touch screen input compatibility! Anyway, I'm guessing there's "physics" to do with it which is why I'm thinking that even though it'll be a 2D application I'll need to code it in a 3D environment.

Assuming that I'm correct in how I want to approach my project, where can I start learning about 3D programming? I actually come from PHP programming which will make C++ easier for me to learn. But I don't even know where to start. If I'm not wrong OpenGL is the most up to date API as far as I know.

Anyway, please give me your insights guys. I could really use some guidance here since I could totally be wrong in everything that I wrote :)

I would like to add that I'm most likely looking for tutorials, Linux 3D programming sites, source/demos (google failed me for the most part).

Note: I also understand this is not a project I'll finish in weeks, months and might take years. That's fine, I want to get C++ under my belt however long it takes. I'm just looking for opinions, sources, tutorials and things that might help me (as stated above).

Consolidate multiple site files into single location


Creating a PHP web page that enables you to reboot the server in Linux?
I don't know enough around the MS Surface, although I'm a musician and multimedia artist working mostly with code, so... What the best multi-thread application debugger for C++ appsMy advice is very enough different - it doesn't matter if it's Irrlight, Orge, pure OpenGL or anything else. Build an Xcode project on a Linux machineIf you don't know enough around 3D prgramming you'd better start with any thing different. How do I pass a Python Variable to Bash?There are several environments for artists to job with graphics, multimedia and code. read from file after calling lseek64 - LinuxTry one of them and watch the projects made in each of them on the project's websitees and on Vimeo. Basic heap usage statistics in GCC on 64-bit platformI think most of what you want to did is already done, although still must be very inspiring. Segmentation Fault in prime number sieveThe environments this come to my mind are:.
  1. Processing - great prototyping environment by Ben Fry and Casey Reas. I use it always before coding anything serious as it provides me with all the multimedia and communication libraries i need, it's simple like hell and it's Java so you must easli deploy your apps after all! (As far as I remember there is touch surface library for Processing).
  2. openFramewoks - same as above although C++, although it's less clean and still under development. It's very easy to prototype in Processing and code finally in openFrameworks as the latter was very enough influenced by the former. (The touch surface library is implemented for oF for sure).
  3. NodeBox - great and very powerful environment in Python. Has a very strange although great and intuitive (after all) GUI with any very unique methodolody of work!!.
  4. SuperCollider is a wonderful sound processing and algorythimc composition programming language with a very easy to code GUI library and graphics API. It gives you everything you ever imagined around sound programming functionality..
  5. Pure Data - graphical approach toward programming. Made by Miller Puckett (the co-author of Max/MSP) with OpenGL (GEM extension) functionality provided by the guys from IEM in Austria. .
Final good advice: Books!!! Programming Interaction (O'Reilly), a few books on Processing website, classic job - Computer graphics for Java programmers (great one, really!!). Read as well all the chapters around domain languages and domain knowladge in "97 things every programmer should know". It must really help!! . BTW: if you don't concider heavy real-time procedures thing around Java (Java2D, Java3D, JOGL) - it's millions times easier then C++ and Processing is actually Java, so you have a very good prototyping environment this must produce ready to use Java classes and applets. I used Processing in real-time theatre productions where stage movement was controlling the sound (syths and hardware samplers) all made in Processing, so this "heavy real-tme" means HEAVY real-time!!. If any further questions around this particular domain programming - don't hesitate to email me. .


Coming from PHP won't make C++ any easier to you as riding a bicycle won't make driving a car easier.. Now, I think for Linux, your only choice is OpenGL as an API, and use any of the many wrappers, 3D programming frameworks, and what not available.. Maybe you must go into an easier language, like Python, and if there are OpenGL bindings (which I am pretty sure there is) you must use that, this would make the learning curve more easy and fast..


Ogre, using OpenGL on Linux-based OSes, will save your life and time, compared to using OpenGL this is your sole alternative.. That said, to use Ogre, you'll have to know a fair amount of knowledge and practice in C++. And you will have to know around "graphic pipeline".. You must use C with OpenGL, this seem simpler, although it make you loos time by not providing higher abstraction of the graphic pipeline as Ogre does. . And almost all graphic engines are written in C++ anyway.. Now, if you try to learn C++, take a good book like "Accelerated C++", take a deep and long breath and please forreceive all you learnt around php before. Be humble in your search for knowledge and you'll receive it faster..


You'll be interested in:.
  • OpenGL (obviously)
  • Box2D (a 2D physics engine)
  • SDL (a portable media library)
You must find basic tutorials for them on the web. However, think if you really want to code in C++. The language is very powerful, although not easy to learn, and really hard to master. Wouldn't it be better to use a rapid development language like Python with PyGame? . Don't receive me wrong -- I love C++ and it's my language of choice, although unless you're working on top-notch performance, operating systems or compilers, it may be overkill to learn C++'s up and downsides the hard way..


You need neither 3D graphics or a physics engine for this. The UI could even be done in a browser using any funky javascript.. However, the audio engine for any thing like this is going to be a pretty complex, performance-oriented beast, and is probably best done in C++ (or maybe OpenCL).. Finally, are you sure you're not reinventing Pure Data?.


I prefer Irrlicht as a lighter, easier-to-learn, although less feature-complete API than OGRE. It's literally possible to write a prototype in a few minutes in Irrlicht, and the code itself is easier to understand.. The best thing around it is this it would interface seamlessly with Irrklang, a sound library this may guidance you with your project..

56 out of 100 based on 71 user ratings 866 reviews