Thread: Need some help choosing a good graphics library

  1. #1
    Registered User dead_cell's Avatar
    Join Date
    Jun 2002
    Posts
    44

    Need some help choosing a good graphics library

    Hey all,

    I've been getting bored with console-based C++ programming lately and was thinking about doing a little bit of grahpics work in C++ before I move on to full-fledged windows apps and the like (maybe moving on to Perl...). The only problem is, however, that I don't have a graphics library. I've heard some good things about allegro, but I'm wondering what you all think is the best library (for an intermediate coder).

    Thanks again,

    Dead Cell
    Linux is great - It does infinite loops in five seconds!

    ~Linus Torvalds

  2. #2
    Carnivore ('-'v) Hunter2's Avatar
    Join Date
    May 2002
    Posts
    2,879
    To choose from:

    OpenGL - Cross-platform support, only graphics, supposed to work great with SDL (i.e. SDL for input).

    SDL - Cross-platform support, supposed to works great, supposedly used to port some Windows games to other platforms

    GDI - Built into Windows, only graphics, very slow, counter-intuitive, but still useful to learn. Not sure if it's a "library".

    Allegro - Heard it's really easy to pick up, can do lots of neat stuff really quickly, and the documentation is good.

    BGI (?) - No idea what it is, or if it's a library.

    DirectX (directdraw) - Not sure if its a library, but very good for graphics. Not good for beginners though.

    Those are the ones I've heard of, and I've given my personal opinions about them.
    Just Google It. √

    (\ /)
    ( . .)
    c(")(") This is bunny. Copy and paste bunny into your signature to help him gain world domination.

  3. #3
    I do believe BGI is Borland Graphics Interface. I don't think they ever made a windows version.

    I used to recommend Allegro to beginners, but now I don't. Why? Because it teaches bad habits in programming, that could mess crap up in windows. Especially in handling messages. I would recommend learning the Win32 API before you start using anything like Allegro or SDL. Although Allegro requires no knowledge of windows, I would still learn Win32 b4 Allegro. I learned Allegro first, and now I am slapping myself silly trying to forget all the crap that in regular programming you should never do.

  4. #4
    Carnivore ('-'v) Hunter2's Avatar
    Join Date
    May 2002
    Posts
    2,879
    Nice to know that I did something right for once
    Just Google It. √

    (\ /)
    ( . .)
    c(")(") This is bunny. Copy and paste bunny into your signature to help him gain world domination.

  5. #5
    In your face... ha ha ha Liger86's Avatar
    Join Date
    Dec 2002
    Location
    Motorcity Capital
    Posts
    321
    hey dead_cell!

    If you think you know consol-based programming well, and you had a bit experience in VC++ then you go to try OpenGL!

    I'm currently going therough an OpenGL tutorial on http://nehe.gamedev.net/ and they explain stuff so its easy to understand! Well to me, however you should choose wisely becasue ones you get adicted to OpenGL you wont want to go back and vice versa!

    But make sure you know C++ good before you gothere, you won't know a **it what the're are talkin about.
    From Ukraine with love!

    Internationally known – widely respected

    - Digitally yourz -

  6. #6
    Registered User dead_cell's Avatar
    Join Date
    Jun 2002
    Posts
    44

    thanks

    Thanks everyone. I've been getting bored with C++ for the last little bit (they're making me learn VB @ school... bletch!!!). Anyway, I think I'll try my hand at a little bit of allegro, then some OpenGL - then I think I'll be ready for the win32 API.

    Thanks again everyone!
    Linux is great - It does infinite loops in five seconds!

    ~Linus Torvalds

  7. #7
    Registered User Coder's Avatar
    Join Date
    Aug 2001
    Location
    Cairo, Egypt
    Posts
    128
    If you decide to choose between DirectX Graphics and OpenGL, make sure you read this document here : http://www.xmission.com/~legalize/d3d-vs-opengl.html which is a straightforward comparison between the features provided by the OpenGL 1.2 core ( i.e. no extensions ) and Direct3D 7 and 8.

  8. #8
    In your face... ha ha ha Liger86's Avatar
    Join Date
    Dec 2002
    Location
    Motorcity Capital
    Posts
    321
    Learning OpenGL is harder then I thought!

    Oh god, nooooooooooooooooooo
    From Ukraine with love!

    Internationally known – widely respected

    - Digitally yourz -

  9. #9
    Unregistered Leeman_s's Avatar
    Join Date
    Oct 2001
    Posts
    753
    if you ask me, learn windows API before opengl or directx

  10. #10
    Carnivore ('-'v) Hunter2's Avatar
    Join Date
    May 2002
    Posts
    2,879
    Indeed. After all, DirectX needs Windows to work...
    Just Google It. √

    (\ /)
    ( . .)
    c(")(") This is bunny. Copy and paste bunny into your signature to help him gain world domination.

  11. #11
    You have to have Win32 knowledge to do anything in DirectX because you have to use Win32 to use DirectX. I would learn GDI or GDI+ b4 DirectX as well.

    * To use GDI+ you have to have the new Platform SDK and the dll for it. WinXP and I think 2k come with the dll.

  12. #12
    Registered User
    Join Date
    Aug 2001
    Posts
    403
    making a good game in OpenGL generally requires a bit of math (collision and stuff)

    if you want to start in 2D i'd recommend (shameless plug: http://zengine.sourceforge.net) It uses SDL and OpenGL, and it's real easy to use, and I offer personal support for it (seeing as I wrote the entire thing)

  13. #13
    Registered User
    Join Date
    Sep 2001
    Posts
    305
    another one is clanlib(clanlib.org). cross-platform, and works better with ogl than sdl. bgi is slow.... dont use it.

  14. #14
    Winston
    Guest
    As allegro is all i've ever known, i'd be interested in knowing what bad habits it teaches you.

  15. #15
    well, just to name one, it teaches you not to even bother with windows messaging (not MSN messenger, actual messages that tell programs what to do). Sure it handles it for you, but in a real windows application you would never use readkey(). You would lose a bunch of messaging. Now unless you want to use Win32 API mixed with Allegro which really kills the whole concept of simplicity, you are going to be confused when you start windows. I think SDL is like this as well, but I'm not sure. SDL is also a LOT better organized. Some people won't really develop this habit in Windows, but some will. NEVER make a blocking function in Windows unless it can do a message loop within itself.

    Here are some things I DON'T like about Allegro besides the bad habits (yes I only named one, but it's the only thing I can think of off the top of my head)

    1. Lack of organization and consistency
    2. Not very flexible. Although they think it is, just because they support a bunch of obselete file formats nobody uses anymore
    3. I HATE the function names. Everything is lowercased and words are seperated by underscores. example: draw_sprite(). Someone asked one of Allegro's dev'ers one time to change it to Hungarian Notation, or at least LikeThisToSeperateWords and he said "No, because I like this way better"
    4. The attitude with the developers is "This is OUR library meaning what we want goes in, what we don't does not. Just because everyone wants something doesn't mean we're actually going to put any effort into it". They actually said that in some form on the message boards.
    5. THEY MAKE EVERYTHING GLOBAL! They have a bunch of crap declared global, and they have a bunch of crap you could crash your program with right out in the open for Joe Schmoe to change. They need some sort of organization. At least use a structure for the things that were global.
    6. Speaking of global things, I think they should have the allegro library packed up in a class. Sure you lose C support, but most people who use Allegro use C++ and not C. C is dieing day-by-day. There are some people still using it, but I think it is more of a drawback, because a lot of API's take OOP out of the API just so C coders can use it.
    7. It's slow and kinda bulky. Sure it uses DirectX, but I think it uses like DirectX 5 or something. Even if it is 6 or 7 or something, it's just slow. Just to make alpha blending not take you down 10 FPS you have to download a whole new plugin just for blending crap, and don't get me started on how ugly coding for FBlend is.
    8. No consistency on function names. I know Allegro 5 will have al_ in front of function names, but that's years in the future, and it'll be more behind if they are going to be as lazy with that as they were with 4. I don't think they spent much time designing Allegro, they just threw it together as they went. You can tell if you look at the logs on Allegro's past. That is part of the reason some of the crap is so crappy, they just threw in what worked that moment and forgot about it.
    9. Organization problems
    10. Organization problems
    11. Lots of glitches
    12. 600K DLL file, bad for someone like me who's limited to 24K connection. And usually a full-sized Allegro game is less than that because it is mostly n00bs doing their first projects (there are some GREAT programmers using Allegro, but they have their own opinion, and I respect that). I never have finished an Allegro game, a lot of times because I have to search around for a plugin just to do something that was supposed to already be in Allegro, but really isn't.

    Now don't get me wrong, I couldn't make something as large as Allegro, simply because I could care less about all those DOS drivers and all the other platforms, but I can probably make a better DirectX Wrapper than allegro is. I know it is made for Multiplatform support, but SDL is multiplatform, and I've heard has great support for DirectX (note: SDL = Simple DirectMedia Layer). I'm not saying Allegro is a bad library, they just need to clean out the s***, and fix their attitude. If you are making a library, supposively for the people, make it designed for the people, not for your sole-benefit.

    People will probably ***** about this, but I have my own opinion on things, and you probably have a diff one as well.

    PS: Sorry for long post
    Last edited by frenchfry164; 01-03-2003 at 11:36 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Recommend a good exception library?
    By ITAmember in forum C Programming
    Replies: 9
    Last Post: 06-26-2009, 12:34 PM
  2. Need simple C graphics library
    By Sharke in forum C Programming
    Replies: 4
    Last Post: 02-16-2009, 10:25 PM
  3. Difficulty choosing graphics library
    By jdiperla in forum Game Programming
    Replies: 11
    Last Post: 02-27-2008, 06:35 PM
  4. Graphics Programming :: Approach and Books
    By kuphryn in forum Windows Programming
    Replies: 4
    Last Post: 05-11-2004, 08:33 PM
  5. good vector library
    By rotis23 in forum C Programming
    Replies: 4
    Last Post: 10-08-2002, 11:49 AM