Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

What technology to learn for graphics programming?

Options
  • 27-09-2005 8:06pm
    #1
    Registered Users Posts: 1,722 ✭✭✭


    I'm looking making a few small graphical programs purely for my own enjoyment and I'm trying to figure out what to do. I've got a lot of experience with the java graphics api but wasn't too impressed with what it could do. I've messed around with openGL for a while a few years ago but I'm not too sure if its still the best thing for someone to try and learn at the moment? Am I better off going and learning how to use directX and windows programming? Or should I go for what flash can do? I remember seeing a fully functional 1st person shooter in flash a while ago.


Comments

  • Registered Users Posts: 1,865 ✭✭✭Syth


    What kind of graphics 3D or 2D? Flash would be good for cartoony 2D, I reckon. OpenGL and DirectX are pretty similar in terms of learning, both are designed for proffessional use. I learned OpenGL in college, and I didn't find it too difficult.


  • Registered Users Posts: 83 ✭✭fatlog


    Syth wrote:
    What kind of graphics 3D or 2D? Flash would be good for cartoony 2D, I reckon. OpenGL and DirectX are pretty similar in terms of learning, both are designed for proffessional use. I learned OpenGL in college, and I didn't find it too difficult.

    got any good openGL tutorials??


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    fatlog wrote:
    got any good openGL tutorials??

    Try here; http://nehe.gamedev.net/


  • Registered Users Posts: 1,722 ✭✭✭Thorbar


    The thing is those nehe tutorials have been around for 4 or 5 years at this stage, just curious if there's still any development going on with openGL. I already have a few opengl textbooks so I guess I'll just stick with that but would anyone know if DirectX is definately a better option?

    The thing that would attract me to doing flash is that its web based so it would be really easy to distribute any games I produced. Just from the little knowledge I have of flash scripting its a pure nightmare to organise once you go beyond the more basic programs.


  • Closed Accounts Posts: 503 ✭✭✭OMcGovern


    C / C++ is the language of choice for PC game developers, at least those that require the fastest frame rates.
    It's platform specific so you get platform specific performance enhancements.
    Whether that's on consoles or PC's.

    Direct X and Open GL are supposed to be similar in functionality and performance. But Direct X is Windows Specific, whereas OpenGL is more generic.

    While Java does have Java3D, Java is still slower than hand-crafted C/C++ code.

    Physics engines are becoming as important as graphics engines these days.
    So you may need to brush up on your 3D math too !

    regards,
    Owen


  • Advertisement
  • Registered Users Posts: 2,082 ✭✭✭Tobias Greeshman


    It depends on what sort of graphics development that you want to get into, if its game development then its DX or OGL. Flash might be interesting and a nice looker on your CV, to know a little bit about it.

    Id tend to chose DX over GL, as it is quite powerful the last time I seen it with Pixel Shaders and the like. But I know GL was due to get an update so not too sure if the spec has been updated (GL gets updated very rare, its at version 1.4 or something, while DX is at 9.0c I think).

    IMO directX has everything you want (Maths, Input, Music, Graphics, Networking), but it can be a little bit of a pain trying to learn it, some of its interfaces are quite messy and the way data is stored as opposed to GL. Most games companies will look for DX programmers, so its definately worth knowing if your serious about graphics development.


  • Moderators, Music Moderators Posts: 1,481 Mod ✭✭✭✭satchmo


    silas wrote:
    Id tend to chose DX over GL, as it is quite powerful the last time I seen it with Pixel Shaders and the like. But I know GL was due to get an update so not too sure if the spec has been updated (GL gets updated very rare, its at version 1.4 or something, while DX is at 9.0c I think).
    That's just plain wrong. OpenGL is at version 2.0 at the moment, and has full vertex & fragment shader support exposed through the OpenGL Shading Language (GLSL).

    It's true that OpenGL isn't updated as often as DirectX, but there's a good reason for this. DirectX is proprietary to Microsoft, meaning they can do anything they want to it. If they make a bad design decision, nobody else is going to tell them if and why it's a bad idea - this is precisely the reason DirectX was pretty much useless up to DX5.

    On the other hand, OpenGL is governed by the Architecture Review Board (ARB), comprised primarily of representative from 3Dlabs, Apple, ATI, Dell, IBM, Intel, NVIDIA, SGI, and Sun. Any changes in the language must be ratified by the board, and this doesnt happen until everybody agrees what the right course of action is. While this does mean that the lead time on new features takes longer than D3D, it also means that the API is overall cleaner and easier to work with, and bad design decisions are much less likely to be made. Additionally, the OpenGL extension mechanism means individual vendors can immediately expose any new functionality they want (eg NV_vertex_program, ATI_draw_buffers). If these extensions prove to be useful and well-designed, they get promoted to an official ARB extension (ARB_vertex_program), and finally promoted to core OpenGL in the next version.

    Personally I prefer OpenGL. I think it's easier to learn, and the state machine approach just makes sense to me. However if you're going to compare OpenGL and Direct3D on functionality alone, you're not going to see much of a difference.

    Anyway, enough ranting. There's plenty of GL tutorials out there... the NeHe ones mentioned above are still a good and comprehensive place to start - even if they were written a while ago now - although I think introducing Win32 at the same time as OpenGL can be a bit overwhelming to some people. An easier introduction would be to use GLUT (DLLs available here), which takes care of all the windowing and mouse/keyboard input for you. See http://www.lighthouse3d.com/opengl/glut for a good GLUT tutorial, which should also teach you some of the basics of OpenGL.

    Plus don't forget that there are plenty of people around here with good OpenGL experience willing to answer questions.


  • Registered Users Posts: 5,335 ✭✭✭Cake Fiend


    I'd recommend taking a look at SDL. It's cross-platform, cross-language, easy to learn, fairly powerful and a lot of fun. It's also steadily gaining popularity. There are tutorials linked off the home page.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Thorbar wrote:
    The thing is those nehe tutorials have been around for 4 or 5 years at this stage, just curious if there's still any development going on with openGL. I already have a few opengl textbooks so I guess I'll just stick with that but would anyone know if DirectX is definately a better option?

    The thing that would attract me to doing flash is that its web based so it would be really easy to distribute any games I produced. Just from the little knowledge I have of flash scripting its a pure nightmare to organise once you go beyond the more basic programs.

    Re old OpenGL stuff, nah, the principles and core API are still the same, and from a beginner's point of view, Direct3D and OpenGL are equally good; just pick one and use that for the moment. You'll hear vast amounts of BS either way (to the extent that the topic "OpenGL vs DirectX" is banned on some forums), but at the end of the day, you can do the same thing with either of them. The only issue there is that if you want to develop graphics apps to run on Linux or other platforms, obviously use OpenGL - DirectX in general is Windows only.

    Flash is useful for web-based graphics and games, but if you're looking at the regular console/PC game end of things, it's completely irrelevant.

    And yeah, as Sico suggested, also take a look at SDL, it can save you a fair bit of hassle when you're getting into games development.


  • Registered Users Posts: 1,785 ✭✭✭Farls


    OMcGovern wrote:
    C / C++ is the language of choice for PC game developers, at least those that require the fastest frame rates.
    It's platform specific so you get platform specific performance enhancements.
    Whether that's on consoles or PC's.

    Direct X and Open GL are supposed to be similar in functionality and performance. But Direct X is Windows Specific, whereas OpenGL is more generic.

    While Java does have Java3D, Java is still slower than hand-crafted C/C++ code.

    Your a few years out of date man...Java now uses openGL bindings namely JOGL I used this last year and it is excellent. With the new PS3 going to have a JVM Java is slowly but surely becoming more the language of choice than C/C++. JOGL is also achieving rates just as good as C/C++ now if not better. (I havent used it in a few months) Java3D is a thing of the past also, sun has moved it out as a community project and declared openGL bindings (JOGL) as the way forward.

    OpenGL has left DirectX in the dark ages in terms of what it offers also especially now Java can be used as the "host" language for it.

    If your just looking for a bit of fast fun thought I'd reccomend Blitz3D, it's available for download I think, I seen a few nice games made with this before.


  • Advertisement
  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Farls wrote:
    OpenGL has left DirectX in the dark ages in terms of what it offers also especially now Java can be used as the "host" language for it.

    Care to expand on that?


  • Registered Users Posts: 1,785 ✭✭✭Farls


    Direct3D I meant...its late :o


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Farls wrote:
    Direct3D I meant...its late :o

    Well, on that basis then? From an end user perspective, as an example, in simple terms, DOOM 3's graphics engine uses OpenGL for its rendering. Half Life 2 and Far Cry use DirectX. They all look pretty good, from a user point of view. So given that end results that can be achieved seem very similar, in what sense exactly would Direct3D be "left in the dark ages" by OpenGL? There are certainly plenty of differences between the two APIs, but where does it get that extreme? Just out of curiosity.


  • Registered Users Posts: 1,272 ✭✭✭i_am_dogboy


    I've been doing a fair bit of 3D programming the last 2 years, and I've tried out a good bit.

    If you're going to stick with java I would recommend lwjgl over jogl, it's faster and it's got extra bits and pieces included. But jogl is a hell of a lot better if you want to use traditional gui components, jogl is usable with swing and I think it's thread safe, but I'm not sure on that last one, while lwjgl has it's own set of AWT classes which isn't as complete as swing.
    If you're going for C or C++ I'd recommend Opengl, but there's not much of a difference between it and Direct3D, D3D seems more complete but is more of a pain in the ass to initialise and stuff.
    Another thing to think about is managed Direct3D, I started using it a few weeks ago in C# and I'm really liking it, it only took me 3 days from not knowing anything to having made a little puzzle game.

    If you want to take the route that's the least hassle, go for a scene graph. There's an extra bit of effort in learning the theory behind scene graphs but I've found them to be a hell of a lot quicker to code and the code is generally much clearer, but they incur a performance hit, in some cases a serious performance hit. Xith3D is a good java one, and it supports both lwjgl and jogl, OpenSG is the only one I've tried in C++, it's a bit of hassle to get working with visual studio 2005, but it's faster than I was expecting.
    Generally what I've done in the past with anything major is write basic graphics with a scene graph, then when I have the program working fully, I re write the graphics in OpenGL, to get the extra performance.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    If you're looking at getting into games development btw, www.gamedev.net is an excellent resource - the forums there have vast amounts of info on all areas of game development - graphics, general programming, design, AI, etc, etc.


  • Registered Users Posts: 1,722 ✭✭✭Thorbar


    Thanks for all the advice lads, for now I think I'll do the nehe tutorials first if I can get them to work with eclipse CDT and then I'll see from there.


  • Closed Accounts Posts: 146 ✭✭MrScruff


    Python and PyGame look interesting:

    Build a game in a week!


Advertisement