11 ms·
That's stupid. Competent 3d on Windows is DirectX. Competent 3d on Mac/ios is Metal. Competent 3d on consoles uses their propriatary API. So, what is the point
by euos 9y ago
That's stupid. Competent 3d on Windows is DirectX. Competent 3d on Mac/ios is Metal. Competent 3d on consoles uses their propriatary API. So, what is the point of OpenGL portability? Between Linux and Android? You _will_ have to switch API if you are making anything worthy.
- shmerl 9y agoThat's smart. Those who don't think about it in advance, are bitten by this later. Read the article above. Metal is Apple's lame attempt to tax cross platform graphics developers. That's exactly what is emphasized there.
- cwyers 9y agoThe article you linked to is advice from people who port games to Linux on how to make games more portable. It's not advice on how to ship them on time, how to make them performant, how to minimize the amount of developer labor required to build them. Given what a small share of the market Linux is for games, developers have other priorities than what makes games easy to port to Linux. And it's not a chicken-and-egg problem; the Linux market for games isn't much smaller than the Linux market for any other commercial software.
- shmerl 9y agoPerformance is orthogonal issue to portability. You can make it portable, and perform well too (using something like Vulkan and proper engine design). Linux gaming market is growing. Not sure about other commercial software in this context, but I'd guess it can indirectly be affected too, since bigger gaming market makes Linux desktop usage grow in general.
- klodolph 9y agoSo, "Here, use a different API with worse developer support, and in return you get access to a market that's ~1-2% the size of the Windows gaming market?" I mean, I'm all for OpenGL. I use OpenGL. Hell, I develop OpenGL games on Linux and then port them to Windows afterwards (released ~10 made that way so far). But the choice to use it depends on what market you're going after.
- shmerl 9y agoIsn't it what MS is saying for DX12? Except Vulkan is not locked into MS only stuff.
- klodolph 9y agoThe cost of porting between DX12 and Vulkan is not so high, not anything like the cost of porting between OpenGL and DX11.
- Qwertious 9y agoVulkan has better performance than DX11, and it has literally twice the audience of DX12 - DX12 only supports Windows 10, so any W7/W8/etc users are SOL unless you use DX11 or Vulkan.
- pjmlp 9y agoThat is not what the lists of released AAA titles show. https://en.wikipedia.org/wiki/List_of_games_with_Vulkan_support https://en.wikipedia.org/wiki/List_of_games_with_Vulkan_supp... https://en.wikipedia.org/wiki/List_of_games_with_DirectX_12_support https://en.wikipedia.org/wiki/List_of_games_with_DirectX_12_...
- shmerl 9y agoThis is irrelevant. With all major engines gaining Vulkan support this list will baloon fast.
- pjmlp 9y agoA good gaming engine supports multiple graphics APIs, making specific ones irrelevant.
- shmerl 9y agoMy point was, adoption in engines is relatively slow, but once it happens, things become easier. So current usage lists aren't a reflection of general progress. Unity for example gained Vulkan support in the latest version which came out recently, and Unreal is still not there (but already close). Same goes for Lumberyard. Of course the tax on development imposed by lock-in freaks translates into that slowness. I.e. as you said, need for engines to support many balkanized APIs means slower releases to the market.
- cwyers 9y agoIn the abstract, performance may be unrelated to portability. But if tooling, drivers and expertise are all focused on DirectX, and if getting OpenGL to do everything DirectX can do requires using vendor-specific additions to the spec that are non-portable, then in practice, it may be harder to make OpenGL performant across multiple vendor's GPUs.
- douche 9y agoSeriously, anyone who cares about cross-platform compatibility is already using Unity or Unreal.
- shmerl 9y agoNot everyone, but probably quite many.
- klodolph 9y agoI'm going to agree with cwyers here. The choice of which graphics API to use is not automatic, and "just use OpenGL, dummy!" just glosses over the fact that different developers have different priorities. OpenGL gets you desktop and mobile all in one fell swoop (well, with a lot of tinkering and hard work). If that's your market, sure, go ahead. If you're writing a higher-end game targeting consoles and PC, then you'll end up doing a lot of extra work porting your engine to consoles and in return have access to a much larger market. Those consoles don't really support OpenGL, at least not as a first-class citizen, but one of them does support Direct3D. Direct3D also has excellent developer support. Given the good support, good tool integration, and the fact that Direct3D runs on, say, two of your three most important platforms, it's a good choice.
- shmerl 9y ago> Those consoles don't really support OpenGL, at least not as a first-class citizen Switch supports it now as first class citizen, and Vulkan as well. Nintendo were first to straighten this up. MS and Sony are still in the dark ages.
- klodolph 9y agoThat rhetoric about "the dark ages" is doing nobody any favors, it almost makes it sounds like Sony uses tabs in their source code or something even worse. Is this some kind of holy war, OpenGL versus the forces of darkness? To clarify, yes, I was talking about PS4 and Xbox One. Those two systems, plus Windows, are the primary market for most AAA games. Just do a search for "2017 video games" and you'll see a big chunk of games that only run on those three systems. OpenGL isn't a very compelling choice there.
- shmerl 9y ago> That rhetoric about "the dark ages" is doing nobody any favors I'm calling it what it is. Their refusal to support Vulkan shows they intend to remain in the dark ages, and continue forcing developers to operate with balkanized non portable APIs. It's like some browser maker would refuse to support HTML and would require you to use ActiveX, Flash or whatever.
- klodolph 9y agoThat's some impressive graphics fetishism on display there. It's hard not to take offense at the comment that anything less is not "worthy". Not everyone is a AAA studio with an engine development team, nor should everyone hold themselves to those standards of engine performance. OpenGL 3.3 is a pretty nice target. It's easy to port an OpenGL 3.3 game to a lot of systems, including mobile, since OpenGL ES 2.1 is pretty similar, and Windows XP, which cannot run DirectX 10. (This matters less as time goes on, but it's been an important point in certain markets in Asia.) So you can write the graphics code once, more or less, and run it everywhere, more or less. The idea that somebody who chooses to do this is therefore not "competent" just boggles the mind. No point in deriding engineers who decide not to use the latest bells and whistles in the graphics pipeline. Maybe they just have other priorities. (To clarify: the recommendation that everyone should just use OpenGL regardless of situation is, in fact, stupid. So I agree with that part. But it's equally stupid to say that everyone should use D3D12 / Metal regardless of circumstance.)
- Const-me 9y ago> OpenGL 3.3 is a pretty nice target Intel HD 3000 (6 years old, much newer then Windows XP) only supports OpenGL 3.1 on Windows. VmWare workstation only supports OpenGL 3.0 for Win7 guests. Direct3D 11 works flawlessly on both of them.
- shmerl 9y agoIntel HD 3000 has better OpenGL support on Linux (thanks to Mesa). It's at 4.0 with software implementation of ARB_gpu_shader_fp64. And I doubt it supports all of DX11 properly as well. I don't think you need to worry about that when gaming is concerned though. It's too old and below minimum requirements of huge amount of games already.
- Const-me 9y agoYep, on Linux and OSX it supports OpenGL 3.3. The hardware fully supports DX 10.1. DX 11 API works fine on that, with feature level 10.1. > I don't think you need to worry about that when gaming is concerned though That’s correct for AAA titles. Casual gamers however often play on PCs without a dedicated GPU.