Microsoft Phases Out XNA and DirectX?
mikejuk writes "It is reported that Microsoft has sent an email to DirectX/XNA MVPs which informs them that they are no longer needed because XNA and DirectX are no longer evolving. What does this mean? If you don't need MVPs then presumably you anticipate nothing to support in the future."
Something was said in that article but I am not sure what...
All the growing platforms use OpenGL. Even Windows can use OpenGL (although it is not tyhe favored child). If you have an eye on the future, it makes far sense to develop with OpenGL. That way you can develop shaders that will work on: Android, iOS, Mac, Linux, Windows, Unix, embedded devices (eg. commercial avionics), the PS3. What you miss out on is XBox 360 and Windows Phone. Compare the combined size of the coverage of OpenGL platforms to the Direct3D-only platforms. There is simply no contest anymore in terms of units shipping and growth rate.
OpenGL is the future of hardware accelerated graphics. The nice thing is that no matter what changes in the hardware/platform space you investment in OpenGL is never lost, it comes across as you migrate.
Cynical? This isn't my first rodeo. I watched them kill off OS/2, pretty much exactly the same way.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
..there's MonoGame.
Microsoft is not getting rid of DirectX.
It's very unlikely that Microsoft will abandon DirectX. It is afterall the reason why most games for the PC are Windows-exclusive. If they OpenGL becomes king, porting to Linux will be a lot easier. Windows will be dumped by a lot of people whose only reason to keep a Windows desktop is gaming.
Thank god!!
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
As anyone who deals in this knows XNA is a dead end and DirectX most certainly is not. They are retiring the XNA part of the XNA/DirectX MVP.
Link
Did we learn nothing from the x-surface debacle?
If computers were people, I'd be a misanthrope.
One thing that the NBC Universal--Comcast thing taught me was that "inaccurate" != "false". (They said news about the merger was "inaccurate". They merged anyway.) Here we go again.
In short, I'm not convinced that either system will survive the axe, and you should probably just polish your HTML5-optimized-for-Metro-or-whatever-it's-called-now (or OpenGL?) skills if you still want to make games for Windows:
So will both die on April 2014? In the words of $got_talent_judge, "I vote Yes."
You can hold down the "B" button for continuous firing.
What a mess of extensions that thing devolved into...
Why they didn't want OpenGL ES on the desktop is beyond me - it was the chance to start over cleanly, they should have pushed it as hard as possible but nooooo....too little, too late.
No sig today...
If MS eventually ditches DirectX completely and with Steam coming to Linux, in a few years Linux could improve on desktop market share substantially. I mean: Gaming is THE major reason so many people still use windows. I sure wouldn't use windows if it wasn't the os that runs all of my games.
The big problem with OpenGL is that the shaders are not guaranteed to run in bounded time. DirectX doesn't have that problem, and the OpenGL emulation layer on top of DirectX unrolls the shaders, and for the ones which won't run in bounded time, just throws them away.
When Chrome implements OpenGL on Windows, it runs it through its own code which does the same thing and preflights it, then renders the OpenGL which will run linearly and in bounded time via DirectX.
The Linux and Mac OS X versions hand the OpenGL to the user space renderer or to the kernel-based renderer, respectively -- there are significant performance advantages to OpenGL on Mac OS X compared to Linux because of this; this ends up being most apparent on portable devices, which have a limited memory copy bandwidth (read: ARM devices), which is why Android doesn't directly use the Linux graphics model, apart from the inability to use binary drivers in kernel space due to EXPORT_SYMBOL_GPL().
But both the Linux and Mac OS X OpenGL renderers take the shaders without preflighting them, as is done on Windows when converting to DirectX calls, and so it's possible to crash the user space driver on Linux, or crash the Mac OS X kernel, on Mac OS (the disadvantage you get in exchange for the reduced copy overhead relative to Linux).
I tried unsuccessfully for several months to try and convince the Chrome graphics guys to run the preflight portion of the Direct X converter on Linux and Mac OS to prevent these crashes on these platforms, to no avail. It'd be more processing, but no more than is already done on Windows, in exchange for a significant improvement in stability for OpenGL/OpenGL ES/WebGL/NaCl on both platforms, which is probably worth the additional processing cost, given that the bottleneck is copying, not processing, on the portable platforms. There are cycles to burn on the desktop systems, even if you'd prefer not to burn them, it's probably worth it for the stability.
In any case, a lot of game developers try for a lot of effects with shaders, and most of them are more concerned with the visual appeal, rather than in running in bounded time and not eventually crashing the system. DirectX protects them where OpenGL doesn't -- except on the Windows platforms they use for development, and that doesn't help get these games stable and running on Mac OS X or Linux, which is what you'd hoe the portability of OpenGL code would have bought you.
Because Microsoft had to justify their purchase of RenderMorphics in 1995 -- the company that made the Reality Lab API that was renamed Direct3D.
http://en.wikipedia.org/wiki/DirectX
Of course Microsoft didn't get it right until version 3. DX1, DX2, DX5. :-/ (DX4 was never publically available.)
At the time there was a petition of game developers telling Microsoft to support OpenGL - but typically Microsoft didn't give a dam -- they have always just wanted vendor lock in with all their technologies.
http://www.graphicsgroups.com/6-opengl/c476ebf66db4600a.htm
Anyway the full blown OpenGL with 4.x is somewhat getting its shit together and is a superset of ES 2.0 and 3.0. Just avoid the fixed function stuff and it should be fine.
Now... I just wish the documentation, tools and quality of drivers were all up to snuff for development. It's not uncommon to write a shader which works just fine on one driver but refuses to even compile on another. OpenGL needs a canonical, driver neutral set of compilers and tools which integrate into IDEs like Eclipse and reduce the hassle of development.
M$ derailed the graphics industry with their strongarm tactics a long time ago. There were already really good graphics api's when directx was shoved bodily down the throats of developers. The only way DX would have been acceptable is if it would have been available to all platforms, not just windows. OpenGL would have/will open gaming up across almost every platform available now. I keep mentioning games because that was where I was always most involved and interested, but having a fully developed and matured opengl would have sped up the adoption use of 3d acceleration on the desktop etc on multiple platforms as well. Put a stake in it's heart, chop off it's head and burn the body!
If I sound stupid, it's not me talking....
It's too cut to the bone e.g. it only supports triangles, lines and points as primitives,
Show me any hardware or software that actually does something different at the core. You can't. EVERYTHING users triangles, lines and points for a reason.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
For these years, I had operated under the assumption that source code was edited & compiled. /.
Gosh, the stuff you learn on
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
I'll say it again. They are in a completely new ball game.
Don't be surprised if they don't abandon the windows code altogether and adopt Linux or BSD code. I can even see they selling the windows base or spinning it off with it's own company and keeping a big portion of the stock.
All they need is make an API for a GUI for devices and hardware that can run on a kernel/platform. Then they focus on developing a device ecosystem and taking their 1/3 commission from developers selling in their app store. Basically adopt the Apple model and compete with them. You go all Apple, or Google, or Microsoft; kind of like investing in cordless power tools.
Imagine if Microsoft redirected legion of internal programmers to generating apps!
Alternative:
Microsoft is just abandoning Windows and starting over with a new OS or three from scratch. They then no longer need to worry about compatibility which is what bloats Windows. A Windows reboot if you will and maybe with a new name. 30 years of compatabilty is irelevent now with emulation now possible. Just reboot the code base every ten years.
What jerks. I don't think I've ever seen such a large company do such a phenomenal job at shunning its existing developer base. Looks like pretty much everything they've introduced over the past decade and a half is getting dropped like it's hot. I guess I should be getting ready to get back into Java or just straight up C++ again? hah I guess it shows that Balmer was never a developer. I miss Billy, blood of my blood!
OpenGL ES 2.0 might be suitable for running a desktop framework, but it probably isn't suitable for the apps running on top of it. It's too cut to the bone e.g. it only supports triangles, lines and points as primitives, lacks geometry and tesselation shaders and has various other restrictions which might be necessary in a phone but should not be when running against a PC GPU.
Guess what? That's what the graphics cards do. No consumer graphics card does quads, strips, fans, big dots or wide lines in hardware. The driver has to re-work them on the fly.
OpenGL ES also needs a separate, standard library for doing immediate mode rendering, matrix math, etc. Newbies can't be expected to do all that stuff for themselves. Direct3D has Direct3DX, OpenGL ES has nothing (I suspect this is one more reason why they're trying to keep OpenGL ES off the desktop when what they should really be doing is creating that library and getting people to use it...)
No sig today...
Just because a high level representation of a shape is decomposed into something else does not mean it's convenient to force an app through the lowest level. Forcing an app to decompose a mesh, quad or a poly into a fan, strip or individual triangles, including coping with all the degenerate cases is a needless development burden.
OpenGL ES 2.0 is meant for embedded devices where such a restriction might be a reasonable compromise. It isn't a reasonable compromise in a desktop where the GPU or the driver could do it far more reliably, efficiently and accurately than some random app.
I agree OpenGL ES 2.0 could do with some proper client side code for matrix calculations and so on. It's very frustrating to program in JOGL, or libgdx or Android and realise they all implement essentially the same stuff (e.g. they all have a column first matrix class) but in entirely different ways
I don't doubt it's done in the driver. One reliable piece of code which has been tested to death which performs exactly as it says on the tin.
What color is the sky in your world?
Video card drivers are among the most unreliable pieces of software in widespread use. (This is one reason why WebGL is such a terrible idea – the last thing you want to do is expose this crappy code to completely untrusted data from the Internet.) If video card vendors can get 1 extra FPS in the latest twitch game by adding an unreliable hack, they'll do it. And there is no way to turn these hacks off.
One of the reasons why Vista got such a reputation for unreliability was that the video card vendors outright refused to rewrite their drivers for WDM. They kept pretending it just wasn't going to happen, and didn't finally do the update until after it was too late and Vista had already hit the stores.
I have some video display code that currently uses triangle strips. I'm planning to change to quads so that geometry correction can be done more easily in my app. I could certainly do it with triangles, but it's just a lot easier with quads. This is used on workstation machines so I'm hoping (although I haven't dived into it yet) that the driver, rather than the hardware, won't have to re-work everything piece by piece.
As for WebGL, I've voiced my own concern about WebGL, but since it's essentially OpenGL ES 2.0 with relatively minor differences I don't it's particularly relevant to the point I was making.
windows/xbox gaming is going to a dead end monopoly, controlled by Microsoft.
they are probably releasing new (expensive) tools, full of MS controls and checks (DRM) with their apps store, so all new games must use their store... and paying MS more and more.
As a side "feature", it will probably also break the wine compatibility for new games during the next several months/few years
Higuita
Microsoft is continuing their current trend of re-inventing the wheel and making everything different, yet the same. For instance Windows RT, the UI development framework, is strikingly similar to WPF, albeit with some strange and head scratching changes that make sense to only that one guy at Microsoft. I would imagine that Microsoft is probably going to re-brand DirectX or XNA into some unified framework that has a Metro-y Windows 8 like feel to it, maybe merging development across PC, mobile and consoles into on consistent API, which is different, yet strikingly similar to XNA or DirectX.
Its just part of Microsoft's current strategy to piss off about as many people as possible, consumers, investors, developers, content creators, Google, etc.
I haven't thought of anything clever to put here, but then again most of you haven't either.
With every articles here of Valve turning to Linux some ans fanboy who think OpenGL is better the general opinion switched and Microsoft got brainwashed too. That's sad because DirectX is one of the very best work of technology that exist currently.
Something people need to understand is the writing has been on the wall for DirectX for some time now. This is not unexpected news to those of us invested in the platform. What I interpreted from this is that DirectX isn't going to evolve (and that XNA is effectively dead, but we've known this for a long time), but that doesn't mean Direct3D, what most people tend to consider when they think of DirectX, is going anywhere. There will always be a need for high performance graphics rendering and it isn't likely going to be OpenGL on the Windows platform.
They've been turning Direct3D into a typical windows component without any extra special treatment since 2011 when they merged it into the Windows SDK. It's just one small piece in the cog of platform technologies.
I can't say I'm pleased with this turn of events, but I can't say I'm particularly surprised, either.
Not a problem for Qt 5 :) They use ANGLE to implement OpenGL ES 2 on top of DX9.
A successful API design takes a mixture of software design and pedagogy.
And besides; has anyone really been far even as decided to use even go want to do look more like?
OpenGL, including the ES subset, is not meant for direct use. You need a library on top of it that handles the minutiae. Qt 5's scene graph is a good foundation for 2D graphics to build on, for example, but it doesn't yet provide much in the way of geometry, all you get is rectangles and circles (rectangles with rounded borders degenerate into circles). If you want fancier geometry, you need to tessellate it yourself, but it's not meant to be that way in Qt 5 for much longer AFAIK. Same goes for use in any other framework. OpenSceneGraph is good if you want 3D geometry.
Example: If your application's primitives express nicely as Bezier polylines, then you deal with that, and pick a library to tessellate stuff and push the geometry to the OpenGL stack. Nobody who's sane will write raw OpenGL ES code in an application, there's no need for it, and it's a waste of time as the job has been done many times over. It's not the job of OpenGL to tessellate stuff for you, as this would quite constrain how you represent your own geometry. Everybody's needs are different there, so there's no one size fits all solution, not really. General purposes application toolkits, like Qt, address that need for 2D applications, other toolkits address that need for non-game 3D applications, game engines solve it for, well, games.
A successful API design takes a mixture of software design and pedagogy.
What a mess of extensions that thing devolved into...
Why they didn't want OpenGL ES on the desktop is beyond me - it was the chance to start over cleanly, they should have pushed it as hard as possible but nooooo....too little, too late.
Well, DirectX included, amongst other things, support for sound, which is not there in OpenGL (which is why, in Linux, one has to struggle w/ Alsa or Pulseaudio) That is one thing Khronos would do well to add, so that there is a common video AND audio standard library.
The performance hit is small enough for Chrome, Qt and other projects to use ANGLE to translate Direct3D to OpenGL:
https://code.google.com/p/angleproject/
no, it won't phase out. It's not like Microsoft would want to commit suicide in the entertainment sector - DirectX is the only huge barrier that prevents porting games to Linux/OSX/Playstation.
When Win8 was first described, I posted a comment along the lines of, "If I wanted an Apple product I'd already have one". At the time I got modded into oblivion though. Go figure.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Direct2D and Direct3D are not being abandoned, they've been moved into the Windows 8 SDK along with other APIs that have replaced components of DirectX such as XAudio2. Microsoft is just retiring obsolete, deprecated, and unsupported APIs like DirectSound (replaced by XAudio2), DirectMusic, and DirectInput. More information is available at Where is the DirectX SDK?.
Well, according to the article, the changes will be made effective on April 1st. So it's an announcement about an April 1st joke way before the date. Good try.
One of the reasons why Vista got such a reputation for unreliability was that the video card vendors outright refused to rewrite their drivers for WDM. They kept pretending it just wasn't going to happen, and didn't finally do the update until after it was too late and Vista had already hit the stores.
Changing the driver model was such a stupid idea that everyone hoped Microsoft would realise and change their minds. Until then, no-one was going to put resources onto debugging drivers for an OS that wasn't even released yet when they could be improving drivers for hardware and operating systems customers actually had.
Just another dumb idea on Microsoft's part, believing they could do what they wanted and the rest of the world would follow them with their tails wagging.
That's what the graphics cards do. No consumer graphics card does quads, strips, fans, big dots or wide lines in hardware. The driver has to re-work them on the fly.
Maybe not today, but the ones I used to work on certainly did. And given that today's 'pro' graphics cards are typically just 'consumer' cards with different drivers, I'm pretty sure their hardware will handle it too; they'd probably have to disable the code in the 'consumer' driver to stop it working.
I think NVIDIA added some extensions so binding objects is no longer needed. You essentially pass memory pointers into the shader, instead of binding/connecting two end points to get the required resource. So that's one thing D3D won't have (but NVIDIA GL implementation does at the moment). I could think of quite a few more!
It isn't really a mess of extensions Joce. As long as you don't use vendor specific stuff, it's fine.
you mean OpenAL? SDL?
---Saying gnome 3 is better than windows 8 not so much a compliment as it is damning with light praise.
They just anounced they are adopting GIT. Next step is to anounce they will be adopting Linux as their OS kernel. Because DirectX is not compatible with Linux they will be ditching it.
Please grow up.