9 ms·
The one problem with that plan, is apple have mostly stopped improving their OpenGL driver in favor of Metal.
by phire 9y ago
The one problem with that plan, is apple have mostly stopped improving their OpenGL driver in favor of Metal.
- microcolonel 9y agoYeah, this really gets my goat. These days MoltenGL and MoltenVK are getting more popular. Good on the Molten* folks for making these layers, but I have a feeling they won't be used very widely unless they're basically free to license. Maybe somebody (Google?) will come around and buy them outright. Even worse, Apple's GL drivers never performed very well to begin with. Their intel drivers have been much slower than Mesa for more than half a decade, and supported fewer (super useful) extensions for about two years.
- kvark 9y agoMolten folks would be happy to be open sourced as long as a sufficient gratification bonus is included. Also, Vulkan Portability initiative is relevant here - https://www.khronos.org/blog/khronos-announces-the-vulkan-portability-initiative https://www.khronos.org/blog/khronos-announces-the-vulkan-po...
- pjmlp 9y agoAll major engines already support Metal, or are in the process of finalizing it. Middleware makes the actual APIs kind of irrelevant. Also there is no OpenGL or Vulkan on majority of game consoles. Even on Switch, Nintendo still has their own API with much more lowere level control than Vulkan, just in case.
- kevingadd 9y agoThis is simply not true. To begin with, the shader languages and bytecode formats are different across OpenGL and Direct3D. Consoles tend to have their own shader pipeline as well. Even if you have great abstractions in your middleware, the capabilities actually provided by the system differ, and you have to consider this. APIs and drivers remain extremely relevant, middleware or not. FWIW the PS3 (among others) actually offered OpenGL, not that you'd want to use it (the implementation was pretty bad - Apple-quality). You can also theoretically run OpenGL code on the PS4 or XBox One if you want to, since they use well-understood AMD GPUs. Fail0verflow has already booted real OpenGL on hacked PS4s (via Mesa, I believe). You can also run OpenGL on some platforms by using ANGLE to emulate specific versions of OpenGL on top of other APIs. So, ultimately the "there is no OpenGL or Vulkan" observation isn't that meaningful - if your codebase is built around OpenGL, that's not necessarily a problem at all. I don't know if I'd bother, but I'd also put money on it being possible to run ANGLE or Mesa GL on top of the PS4 graphics stack (I'm familiar with it).
- pjmlp 9y agoRegarding the PS3, OpenGL ES 1.0 with Cg as shading language is quite different from regular OpenGL. As for the rest of your examples, they are workarounds, not official support, which means extra development cost when problems arise.
- fish_fan 9y agoGraphics are more than just game engines.
- mathnode 9y agoPeople don't seem to undetstand this. DirectX, PSGL, NVNAPI, and Metal are already available where Vulkan will probably never be.
- wlesieutre 9y agoI can't remember exactly what it was, but I remember seeing a GL extension that was originally proposed by engineers at Apple and then not implemented. Other platforms supported it. In hindsight, maybe that was implemented after Apple had internally decided to bail on standards and retasked their graphics engineers to working on Metal. Agreed that this is a sad state and has been for years. Hopefully we'll see an open source solution to Vulkan->Metal compatibility.
- microcolonel 9y agoHmm, anything in here[0] ring a bell? For what it's worth they were reasonably active for a lot of years, they just completely stopped participating a few years ago and it's starting to hold things up. [0]: https://www.khronos.org/registry/OpenGL/extensions/APPLE/ https://www.khronos.org/registry/OpenGL/extensions/APPLE/
- slavik81 9y agoThe Vulkan group is working on finding a subset of of Vulkan which can be implemented efficiently on top of DX12 and Metal. Hopefully that goes well, as I would very much like to write my graphics code once and have it work everywhere. For now, OpenGL ES 3.0 is the closest thing we have to a universal standard. Sadly, compute shaders weren't included until 3.1 so your options for cross-platform GPU compute are OpenCL 1.2 or OpenGL ES 3.0 with transform feedback.