Skip to main content
GameDev.net gamedev.net
🔒 Locked

SDL+OpenGL vs DirectX

Started by ISDCaptain01 Nov 16, 2012 at 8:07 AM 13 replies 6.9k views
Original Post
ISDCaptain01
ISDCaptain01
I just cant seem to decide which one. Its either opengl+sdl or DirectX
What I like about OpenGL is that u can use outdated code or techniques and it will still run. So I dont have to keep on constantly keeping up with changes(staying on top of changes is exhausting, especially when programming isn't your income). Also sdl is easier, than again lack of books


Then on the other hand, DirectX has all documentation. All the books I wanna read use DirectX. So that's also a big deal. But DirectX keeps on changing. By the time I get the hang of it, directx12 will be out. If I were to write an engine in dx9, it would one heck of a time to get it to dx11 and add its features.
honestly what would u guys do?

also is sdl + Direct3d(just direct3d, no directsound,input, etc etc) possible
SimonForsman
SimonForsman
SDL + Direct3D should work.
http://www.gamedev.net/page/resources/_/technical/apis-and-tools/direct3d-90-with-sdl-r2249

I'm not sure its a great idea though.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
21st Century Moose
21st Century Moose
D3D may use a different API every major version, but that doesn't mean that you have to. D3D9 is still well-supported and has been very stable for a decade or so now, for example, so if you wanted to learn that then go right ahead - there's nothing forcing you to jump to a higher version.
Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
PurpleAmethyst
PurpleAmethyst
IMO, learn OpenGL > 3.2. Everything except the Microsoft systems use OpenGL, better to learn 3D graphics via OpenGL and then learn Direct X when you need to.
21st Century Moose
21st Century Moose

IMO, learn OpenGL > 3.2. Everything except the Microsoft systems use OpenGL, better to learn 3D graphics via OpenGL and then learn Direct X when you need to.


While this is in principle true, I generally advise that when you're learning you're better off just forgetting about portability, at least for the first few programs. Your primary task is to learn, not to be portable, and if you worry over much about being portable then you're taking on a whole slew of additional headache that is just going to detract from the job of learning.

Of course helper frameworks/etc make this issue fade a little into the background, but despite that I believe that the basic core of it still stands - focus on what you're learning, not on whether or not it's portable.
Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
PurpleAmethyst
PurpleAmethyst

I generally advise that when you're learning you're better off just forgetting about portability, at least for the first few programs. Your primary task is to learn, not to be portable.


++ to that

I wasn't really talking about portability - which is all well and good until you see a horrible attempt to hack a DirectX like interface over OpenGL sent from the US office and that creates even porting more headaches.

I would consider having OpenGL as your most familiar graphics API is better because of wider support and it is easier to get going with in my experience - It is more fun to learn with OpenGL and there are usually less "WTF is going on??" moments.
21st Century Moose
21st Century Moose

I would consider having OpenGL as your most familiar graphics API is better because of wider support and it is easier to get going with in my experience - It is more fun to learn with OpenGL and there are usually less "WTF is going on??" moments.


I'd suggest qualifying this statement a little.

GL has wider support in terms of platform availability for sure, but in terms of driver quality and assuming Windows, D3D is ahead.

Regarding it being easier to get started, that could be said to be true if you're referring to glBegin/glEnd code, which D3D has no equivalent of. However, many people would advise that learning glBegin/glEnd stuff is actually a case of learning the wrong thing, and when you compare glBegin/glEnd to modern OpenGL, the difference between GL and D3D becomes virtually non-existent.

So if you're referring to glBegin/glEnd, then it needs to be made clear that you'll get started for sure, but you'll quickly enough hit a point from which you can't really go forward.

Isolating the discussion to the modern versions of each API (by which I mean we're talking about VBOs, shaders, render to texture and GPU computing), the APIs are equivalent with D3D being slightly stronger with documentation (I'd dock marks for the awful D3D11 documentation) and substantially far ahead for tools/etc.
Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
PurpleAmethyst
PurpleAmethyst
I did say learn OpenGL > 3.2, not the glBegin/glEnd rubbish.

I still, personally, think GL is easier to learn even with the modern way of doing things in GL is easier and clearer.

I'm not going to get into a row about OpenGL vs DirectX. They are both graphics APIs, they do exactly the same job.
21st Century Moose
21st Century Moose

I did say learn OpenGL > 3.2, not the glBegin/glEnd rubbish.

I still, personally, think GL is easier to learn even with the modern way of doing things in GL is easier and clearer.

I'm not going to get into a row about OpenGL vs DirectX. They are both graphics APIs, they do exactly the same job.


True, I grant you that.
Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
powly k
powly k
As said, 10 year old DX9 code still works on DX9 today. With OpenGL you can build with new features on old things, but I think it's mostly a bad thing - it's why OpenGL is a terrible mess nowadays if you don't go for the strict core versions that don't have any deprecated features.

In the end there's not that much between them; I'd choose the one that feels more comfortable to program with - try a bit of both and then choose.
ISDCaptain01
ISDCaptain01

As said, 10 year old DX9 code still works on DX9 today. With OpenGL you can build with new features on old things, but I think it's mostly a bad thing - it's why OpenGL is a terrible mess nowadays if you don't go for the strict core versions that don't have any deprecated features.

In the end there's not that much between them; I'd choose the one that feels more comfortable to program with - try a bit of both and then choose.


are you sure about that? because I want to read jim adam's advanced animations in directx. it uses directx9 but reviews says the code is incompatible with the current directx9.
Its these kind of things that make me angry about updates to APIs. If your gonna update, dont break it in the process
ISDCaptain01
ISDCaptain01
you know what? i think im just gonna go with allegro since its easier for a hobbyist like me. I think learning a full fledge 3d api will be more of a pain then pleasure. I might comeback to direct3d/opengl when i feel more confident, and feel like dealing with windows code
3Ddreamer
3Ddreamer
Captain,


You are the captain of your ship, but if you keep changing ships in mid ocean, then you might find yourself on all the same ships eventually! tongue.png Remember the saying, "The grass is always greener on the other side."? The next ship will always be better. laugh.png

This time, stick with your decision until you are relatively proficient at in that area. wink.png


Clinton
Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order. </p
ISDCaptain01
ISDCaptain01

Captain,


You are the captain of your ship, but if you keep changing ships in mid ocean, then you might find yourself on all the same ships eventually! tongue.png Remember the saying, "The grass is always greener on the other side."? The next ship will always be better. laugh.png

This time, stick with your decision until you are relatively proficient at in that area. wink.png


Clinton


I havent chosen an api yet, im getting my data structures and algos down first. I wanna be comfortable in c++ first. Just thinking ahead
I havent set sail yet tongue.png

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.