5 ms·
Interesting article, I ended up getting the OpenGL SuperBible to take advantage of yesterday's kindle promotion. I thought about the Vulkan programming guide, b
by lfowles 9y ago
Interesting article, I ended up getting the OpenGL SuperBible to take advantage of yesterday's kindle promotion. I thought about the Vulkan programming guide, but ended up deciding modern OpenGL would be an easier starting point. Did anyone else pick up Vulkan as their intro to graphics programming?
(In a twist of fate, the SuperBible example code only supports OpenGL 4.0+ and my primary computer is stuck at 3.3)
- malkia 9y agoI wanted to learn Vulkan, but as it happened my laptop of choice is Mac, and there is only a commercial implementation of Vulkan there (or maybe there is one now that I can use without paying?). It's not the money, it's just the spending on things just to learn.
- deleted 9y ago[deleted]
- corysama 9y agoVulkan is not a good first-step path to learning graphics. It's maintainers will tell you to start out by learning OpenGL or DX11. However, even though its unpopular for many reasons, Metal is a very good compromise as a starter API. It's design is very close to Vulkan/DX12, but its complexity is much lower. It can even be said to be less complex than OGL in the way that memcpy is less complex than glSubBufferData.
- y_u_no_rust 9y agoMinus the platform support issue I must admit Metal is a really nice graphics api I'm also a big fan of bgfx (https://github.com/bkaradzic/bgfx https://github.com/bkaradzic/bgfx) and looking forward to whatever crossapi-api-spec khronos comes up with
- pfranz 9y ago> Vulkan is not a good first-step path to learning graphics. It's maintainers will tell you to start out by learning OpenGL or DX11. This article is literally advocating the opposite. 'So how did I finally break through that wall of understanding? ... "But Vulkan is the hardz" I hear you saying. "Shouldn't I start with something easy like OpenGL?" Emphatically I say NO.'
- malkia 9y agoThanks, but your message has a bit of an assumption. I'm not graphics pro, but had my ways through VGA 320x200x256 colors in 0xA0000, then a bit of 3Dfx, some OpenGL 1.1, and DX3 then quickly DX5, a bit of DreamCast (but very shy), etc. No, I'm bit familiar with OpenGL, again not at the level of graphics-pros, more like overall knowledge, and my DX knowledge goes pretty much to DX8 or DX9, but instead of learning DX11 or 12, I think Vulkan might be a better choice. I've returned my company laptop week ago, as I left it, and now I'm stuck with my chromebook + crouton, looks like Vulkan is good there (almost). I certainly don't want to get stuck in Metal.
- corysama 9y agoDon't worry about getting stuck with Metal any more than you'd worry that learning C# will prevent you from learning C++. What you need to learn are the fundamentals of modern techniques. I wrote up a recommended path from nothing -> OpenGL -> Vulkan here https://www.reddit.com/r/GraphicsProgramming/comments/6hcri4/how_to_start_in_2017_need_pro_advice/dixtdt3/ https://www.reddit.com/r/GraphicsProgramming/comments/6hcri4... I honestly haven't worked with Vulkan yet, but I hang out with pros from different companies who do and they complain about Vulkan a lot. A whole lot. Part of it is that it is very difficult even for pros to avoid undefined behavior and timing issues. Another is that the only semi-solid shading language front-end for SPIR-V is glsl. Lots of people prefer to work in hlsl and really would like to see Metal's shading language everywhere.
- planteen 9y agoThe future of OpenGL is most likely OpenGL ES. You might want to try OpenGL ES 2.0 Programming Guide (or OpenGL ES 3.0 Programming Guide). It is far less daunting than the OpenGL Superbible. The differences between OpenGL ES 2 and 3 are small and OGLES2 is modern in the sense of shaders unlike OGLES1.
- vvanders 9y agoVulkan is great when you want to wring every last bit of performance out of something. OpenGL ES is a much more straightforward API and will get you something that runs practically anywhere. Most people don't care about tiled vs immediate mode GPUs when they're starting. They just want to get pixels on the screen and there's a ton of resources out there on OpenGL ES. Once you've got your feet under you(seriously, you need to understand matrices, texture formats, shaders, and a host of other things) then look at Vulkan.
- laythea 9y agoVulkan is not just about performance - it increases reliability. If you have ever attempted the hopelessly frustrating task of trying to manage GPU memory from an OpenGl application in a consistent manner, then you will have felt the pain caused by the vagueness of spec/variety of opengl driver differences. From a product point of view, you don't need to sacrifice perf for the ability to run on more hardware types.
- nhaehnle 9y agoEh, I would say Vulkan decreases reliability. Precisely because Vulkan drivers are much thinner and do no error checking, it becomes very likely that you will end up writing code that works on one system but fails on the next. Granted, OpenGL has some of the same issues. It's incredibly frustrating when vendor B accepts some GLSL that is forbidden by the spec, and then some application fails on the more conformant driver of vendor A because the developer failed to test properly. The thing is, Vulkan multiplies these issues significantly. You still have a compiler in the driver, so you still get the same potential for shader incompatibilities. But you also get to manage barriers and texture transitions yourself, and boy is it likely that you'll get something wrong there. And since memory models are different across vendors (and even different between different generations of hardware from the same vendor), it is extremely likely that you end up with code that works on card A but fails subtly on card B. There are tools that try to catch these kinds of errors, but they're far from perfect. On the issue of memory management, I am unaware of any OpenGL issues here that make applications unreliable. Sure, drivers may not always manage memory optimally, but having an application that runs a bit less than optimally is very different from an application that renders garbage because you failed to allocate your textures with sufficient alignment -- which is something you can do in Vulkan. So really, at the end of the day, Vulkan is about giving graphics developers foot-guns in order to reduce CPU overhead. That was explicitly its mission statement from the beginning!
- slezyr 9y agoSave yourself some time and forget about Superbible. You won't make it. Start from learnopengl.com and then you can try Superbible
- lfowles 9y agoThanks, I have been using learnopengl.com because of the 3.3 support. That said, I have been reading the superbible on the side and it has been an incredibly useful resource for getting in the mindset.