Do I need OpenGL ES?

Started by ms62, October 02, 2017, 12:51:54

Previous topic - Next topic

ms62

For developing 3D games for Windows only, why should I use OpenGL, OpenGL ES or WGL and not DirectX?   ::)

TomToad

I don't think it really matters which you use as long as the API supports all the features you need.
------------------------------------------------
8 rabbits equals 1 rabbyte.

ms62

#2
TomToad,

Let's say DirectX is supported by Microsoft and Windows belongs to them too so one option is to use DirectX. Well, for Windows desktop, what makes me not to use ES or WGL? Do I get a different image quality than the original OpenGL which is now OpenGL 4.6? 

Saying it in another way, if I want to use a top notch 3D app in terms of quality for Windows, is using OpenGL ES as good as OpenGL 4.6?

And, another way:

DirectX is for Windows Desktop.
DirectX Mobile is for Windows mobile.
OpenGL is for All Desktops
OpenGL ES is for mobile devices

Why should I use OpenGL ES for Windows, not the original OpenGL or DirectX for Windows only 3D pplications? What I will miss?

col

Hiya,

If I may chime in here...

Quotewhat makes me not to use ES or WGL
Nothing, you are free to choose depending on what the OS you want your software to run offers you. Windows offers the same as the others with the addition of DirectX.

Quoteis using OpenGL ES as good as OpenGL 4.6
Choosing an API can be difficult as there are now so many. The API, be it OpenGL, DirectX, Vulkan etc is just a software interface to give you access to the hardware. As Tom Toad has already said... For you to choose which one is for you would consider what features each API and version will give you plus factor in the difficulty level required for you to achieve your goal. You should look up the feature set and documentation of each API and pick one that suits you and your purpose. Some are considerably more advanced than others.

As for image quality - it's the hardware that produces the image so which API you choose shouldn't make much difference. The API is your software interface to the hardware.
https://github.com/davecamp

"When you observe the world through social media, you lose your faith in it."

Naughty Alien

QuoteSaying it in another way, if I want to use a top notch 3D app in terms of quality for Windows, is using OpenGL ES as good as OpenGL 4.6?

..i think answer is very clear here and it should be DX. Why? Because each DX version offer backward compatibility, which is not case with OpenGL/Vulkan. If you want windows only, DX is way to go. Writing shaders will be also much more straightforward then jumping loops between OGL variants..

TomToad

Quality of image, performance, ease of use, etc... vary from manufacturer to manufacturer.  One system may work better with DX, and another may work better with OGL.  DX for mobile and OGL CE are scaled down versions.  Performance wont be much different, but some features will not be available to you.  Unless you are developing for mobile, there is no reason to use those versions for exclusively desktop apps. If you do plan on porting to mobile in the future, then you might consider using them to make porting easier.

As to whether DX or OGL is better, DX will have the best support across card manufacturers, and therefore, fewer compatibility issues.  On anything modern (within, say, the last 5 years), they should perform about equally.

So the best answer I can give is use DX for exclusively Windows desktop software, OGL if you might be porting to Mac or Linux in the future, and OGL CE if you ever plan on going mobile.  Or do a little extra work and support several APIs and let the end user selects which they prefer, like Irrlitch or Max2D does.
------------------------------------------------
8 rabbits equals 1 rabbyte.

ms62

Thanks guys,

Back to the subject, I think I got my answer here:

QuoteSo the best answer I can give is use DX for exclusively Windows desktop software, OGL if you might be porting to Mac or Linux in the future, and OGL CE if you ever plan on going mobile.  Or do a little extra work and support several APIs and let the end user selects which they prefer, like Irrlitch or Max2D does.

This implies that for my case, Windows only, I should only settle with those engines that let me chose DX or OGL, if available. If that is the case, then Monkey 1, Monkey 2, AGK, openb3d are not good for me because they are based on ES.

Now, for Windows only, which 3D game library should I use with BlitzMax NG or BlitzMax?

Here is the list:

bo3D - last update 5 years ago.
BlitzGDK - is dead
DreiDe - last update 2007
MiniB3D - incomplete, dead
iMinib3d - mac only
Irrlicht - last update 5 years ago.
Minib3D extended - dead
MiniB3D Plus - not finished, might be based on ES
Opneb3d - is ES based
Warner Engine - last update 2011

So, the answer is none.

Steve Elliott

One thing not mentioned is opengl is simply a renderer.  DirectX is a suite of features.
Win11 64Gb 12th Gen Intel i9 12900K 3.2Ghz Nvidia RTX 3070Ti 8Gb
Win11 16Gb 12th Gen Intel i5 12450H 2Ghz Nvidia RTX 2050 8Gb
Win10/Linux Mint 16Gb 4th Gen Intel i5 4570 3.2GHz, Nvidia GeForce GTX 1050 2Gb
Linux Mint 8Gb Celeron Intel UHD Graphics600
macOS Sequoia 64Gb M4 Max
Spectrum Next 2Mb

ms62

#8
About this:

Quote..i think answer is very clear here and it should be DX. Why? Because each DX version offer backward compatibility, which is not case with OpenGL/Vulkan. If you want windows only, DX is way to go.

I don't think DX is backward compatible. Microsoft offers dlls not code compatibility. Codes for DX 12 does not run in DX 11. Even within the same version, one edition is not compatible with another edition.

However, this is correct that the best choice for Windows only is DX. But, the problem remain the same, considering all the facts in the above list of wrappers, is any DX based 3D engine for BlitzMax, the answer is no,

I think the state of 3D engine for BlitzMax is in limbo, if you want to get the best from 3D graphic technology in Windows. 

ms62

So, the answer so far is:

No, for Windows Only, you better settle with APIs based on DX not ES.

That means:

People who buy products that are multi-platform and are Windows users, like me, must know that they won't get the latest quality. They will get common denominator.

Is this correct?


TomToad

 Monkey 1, Monkey 2, AGK, and openb3d are just fine.  OpenGL ES is a quality, and thoroughly tested API.  The only thing is that some features in OpenGL and DX are not supported in ES.  If you don't need those features, there is no reason to exclude ES as a choice. DirectX and OpenGL are also thoroughly tested quality APIs and no reason to exclude those either.  The list you posted in post#6 are not APIs. They are graphics engines.  If you wish to use an already existing engine and not write your own, then look at the features offered for each one, decide which meets your needs, and use it without worrying about which API it uses.
------------------------------------------------
8 rabbits equals 1 rabbyte.

ms62

TomToad,

Thanks for you comment, but I think I got what I was looking for.


Naughty Alien

DirectX 12 (and D3D 12) are backwards compatible with virtually every single GPU from the GTX 400 to the present day (it can go as low as DX9.0c). DX 11 is even wider as its directly compatible with DX9.0c hardware. I have tested it myself and i can confirm this.

ms62

I don't think I will test it, but good to know, I just remember from long time ago that it was not so I assumed so.