Quote: "I've just about had it with Microsoft. Windows XP was a great experience and so was Windows 7, but Microsoft isn't a company driven by innovation, it's domination was driven by the company's alleged monopolistic and anti-competitive business practices which supposedly killed any competition and made it the market leader."
Hi! I like
GNU/Linux and Windows NT.
Quote: "The future of computing almost certainly lies in open source software. Microsoft has seen this upcoming wave as well and is trying to counter it by forcing the manufacturers to lock the BIOS so it can only run signed operating systems, which pretty much means that your machine will only be able to run Windows."
(1) That's only true for ARM devices, which makes sense given the
entire phone industry is locked down that way. (There are a few exceptions, but not many.)
(2) For x86/x86-64 UEFI developers don't have to force a lock in. They just have to support secure boot, and it can be turned on or off. It's a fringe benefit, but a giant inconvenience. Regardless, Ubuntu and Fedora will have their own keys. That doesn't tell me anything about a lock-in.
(3) I don't support secure boot, btw.
Quote: "Gabe Newell worked hard together with the open source community to crush these bugs and bottlenecks."
I'm not familiar with him working directly with the open source community. According to the
original blog post:
Quote: "We’ve been working with NVIDIA, AMD, and Intel to improve graphic driver performance on Linux."
So not quite the open source community. Closed businesses communicating with closed businesses for proprietary products. But hey, everyone benefits from using proprietary drivers now. Except for, you know, that whole
not being open source thing.
Quote: "Further, Gabe Newell referred to Windows 8 as a "catastrophe", driving Valve to embrace Linux"
He has opinions. So does everybody. One of the D.I.C.E. Battlefield 3 engine (Frostbite 2) developers (Johann Anderson, iirc; not bothering to find the tweet) said he liked Windows 8 because it was "closer to what a console offers."
Quote: "Guys, cross platform development is the future of game creation. Microsoft is sinking as we speak, it's time to jump ship and embrace the future."
Cross platform support is the
now of game creation. Look at what everybody has been doing for years? Scrambling to get support for
multiple platforms. Frostbite 2, id Tech 5, CryENGINE, etc, all support PC, PS3, and Xbox 360. That's cross platform. And, it's not like they get to use the same rendering API everywhere. (Though, there's an abstraction layer.) They have to write code for a PC API (GL or D3D), a PS3 API (PSGL or GCM), or a XB360 API (~D3D9). Then there's mobile phones. Supporting Android and iOS is an annoying thing, but at least OpenGL ES works, right? No. The core rendering API (so OpenGL ES itself) works, but how you actually create a context is different across platforms (and supporting the newest Android isn't always an option, so EGL can't necessarily be used for everything without extra code). But, I think what you're calling for is GNU/Linux support. I love the concept of GNU/Linux, but it never works. I've tried it on seven or eight different PCs, each with a different configuration. It never worked completely correctly for me (especially in the driver department). Same with a friend of mine, but it almost never works for him either. At one point, I switched to using
only the terminal of GNU/Linux (no desktop manager or anything). I was able to play music, write code (emacs; can't stand vi), and do all sorts of things with the terminal... Except OpenGL.
The thing is, how do you expect to get any sort of profit on desktop GNU/Linux? Yeah, it's doable. But, you're not going to make a lot. (That said, supporting GNU/Linux is pretty a given if you're supporting OS X. They have most of the same underlying APIs. Just swap out Cocoa for X11/GLX.)
Quote: "Or, you can stay back on your restricted Windows machine with a horrible Metro UI and closed software."
Microsoft actually announced they're not using the name Metro anymore. They'll be making an announcement for its new official name soon (within a week; don't remember exactly when).
Quote: "I dearly hope TGC sees this opportunity and ports their products so they work with Linux, it would be a very wise move on their part."
AGK runs on Android, right? Android is powered by the Linux kernel. Ergo, they have support for "Linux." (Yes, I realize that's not what you meant.)
Quote: "Now I know that a huge discussion about "DirectX 11 vs OpenGL 3" is going to commence and before you say anything about that I'd just like to say that there's one big thing that DirectX doesn't have: It's an open source community. The potential of OpenGL is so much greater than DirectX, all it needs is a little push (which Gabe Newell has already done actually)."
(1) Direct
3D 11 versus OpenGL
4.
(2) OpenGL is an old decaying API and Khronos didn't make any decent advances to it; only catch up. I'll elaborate my points below.
Feature Levels
D3D11 has feature levels, which lets the programmer use the same API to target different levels of hardware. The shading language is the same still. The bytecode is the same still. All the draw calls and everything is still the same. What's different is what's supported. e.g., D3D_FEATURE_LEVEL_9_3 (and below) doesn't have support for geometry shaders, or hull and domain shaders, but the D3D11 API can still be used to target that hardware. That's a very nice thing to have.
OpenGL has compatibility and core profiles. That's... just horrible. In a compatibility profile things will end up getting emulated (not that it doesn't happen with D3D11 feature levels, but it happens less there in my experience). And, the issue with GL there is that
you have no idea what's getting emulated. Although the API "stays the same" (mostly), there's a huge mess of extensions to manage and it's just a tangled mess to manage. At least with D3D11 feature levels you have a decent idea of what the hardware is capable of because each feature level requires a set of minimum specs.
Bytecode Shaders
D3D11 has them. They make load times quicker. It decouples the compiler implementation from the driver implementation, thus reducing potential for bugs. (Implementing a C-like compiler for shading languages is a bug prone task. Much more so for an
optimizing compiler, which is necessary for real-time apps.)
GL doesn't have them. At all. You have text-based assembly shaders, which aren't supported by anyone anymore except NVIDIA through specific extensions. Then there's GLSL. GLSL doesn't support a lot. No semantics and annotations like HLSL/FX (which allows for automating shaders across multiple engines). Instead all variables have to be named the same. (This can be annoying for people who have different naming conventions. e.g., "gVar," "g_var," "Var," etc.) Plus the GLSL has to be compiled. Much worse,
it has to be compiled by the GL implementation.
Extensions
D3D11 doesn't really have them. You can use QueryInterface() on interfaces, but you would have to figure out what sort of interfaces you can query. This would be cool if Microsoft had an extension registry like the ARB. But they don't. With D3D9 you had the FOURCC formats for doing interesting things. Same with D3DRS_POINTSIZE (iirc). You could configure the hardware through these interfaces. Alas, there appears to be no trace of them. (If I'm wrong, someone, please, correct me. I would love to have access to some docs showing extensions for D3D11.)
GL has them. They're really handy. My favorite ones right now? GL_AMD_pinned_memory, GL_AMD_sparse_textures (for partially resident textures), GL_KHR_texture_compression_astc_ldr. (Oh, and GL_NV_uniform_memory_buffer~ and similar "bindless" extensions. Oh! And WGL/GLX_EXT_swap_control_tear.)
Programming against innovative extensions like this can really help out.
-------------------
Okay, all that said, I like OpenGL and Direct3D 11. But, managing OpenGL is horrible. D3D11 has a much nicer interface to me. Even id Software (they use OpenGL in their games) agrees that D3D11 is the nicer interface. Look at this from TGC's perspective though. OpenGL is inconsistent across different platforms. There will inevitably be a plethora of bugs to fix. And really, can you think of a reasonable way to replace FX files with GLSL shaders? (There's the Unity ShaderLab approach, which combines with Cg and GLSL and does some offline processing before feeding shaders to the game.) I wish OpenGL had evolved. :/
Cheers,
Aaron