OpenGL 4.0 Spec Released
tbcpp writes "The Khronos Group has announced the release of the OpenGL 4.0 specification. Among the new features: two new shader stages that enable the GPU to offload geometry tessellation from the CPU; per-sample fragment shaders and programmable fragment shader input positions; drawing of data generated by OpenGL, or external APIs such as OpenCL, without CPU intervention; shader subroutines for significantly increased programming flexibility; 64-bit, double-precision, floating-point shader operations and inputs/outputs for increased rendering accuracy and quality. Khronos has also released an OpenGL 3.3 specification, together with a set of ARB extensions, to enable as much OpenGL 4.0 functionality as possible on previous-generation GPU hardware."
To give an idea to non-OpenGL developers, OpenGL 4.0 closes the feature gap with Direct3D11. If you want to use OpenGL 4.0 you need to wait a couple of weeks before drivers will be out. In case of Nvidia, the drivers will be launched together with their new GTX4*0 GPUs which are the first Nvidia GPUs with Direct3D11/OpenGL 4.0 support. AMD might release new drivers before Nvidia since their hardware is Direct3D11 capable already.
It's not really a huge problem in practice.
All the major graphics IHV's provide that extension anyway. It would nice if it was in GL's core spec, but since it's included for any device that matters, it's not a practical concern.
Mod me down, my New Earth Global Warmingist friends!
It's most similar to D3D 11.
DirectX is a larger set of development technologies and apis (most of which has been deprecated). Direct3d is it's "direct" analog to OpenGL.
Mod me down, my New Earth Global Warmingist friends!
DirectX won, because it does sound and HID input handling, and because its on every PC sold to every mouthbreathing, Best Buy shopping, banana eating customer.
I wouldn't be so quick to say that DirectX won. The xBox 360 is the only current generation console which uses DirectX.
and you can use OpenAL if you want to have the same sound effects engine on windows
Especially Windows Vista and 7 since DirectSound acceleration doesn't exist anymore LOL
> it's not a practical concern.
According to the references linked from that en.swpat.org page, it seems the developers of the free software Mesa project think it's indeed a practical concern.
Please help publicise swpat.org - the software patents wiki
Given that the PC gaming market is really a joke compared to the console market I think DirectX is really rather meaningless.
When the Top 50 selling games world wide contains only 3 PC games The Sims, World of Warcraft, and Starcraft it's time to say that DirectX for the PC is over rated.
Since the Wii and PS3 use a custom modified version of OpenGL for their hardware I'd also have to side with OpenGL as at least being relevant to professional games.
Nintendo requires a new Wii developer to have previous published commercial titles on another platform as well as a "secure office facility", a hurdle that most micro-ISVs cannot clear. 2D Boy had to pretty much cheat Nintendo in order to qualify for a Wii devkit without the overhead of having to lease an office.
I expect that the idea is that instead of calls like glClearBuffer(...) which take their context from the program's global environment, you'd have calls like glClearBuffer(context, ...). The point of this would be to make it easier for a given program to work with multiple contexts at once, e.g. for mixing render-to-texture with normal rendering. (Note: I am not an OpenGL expert, by any means.)
I'm certain no one is suggesting that the GPU become stateless, just the API.
"The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
Most of the data in the GPU memory is textures, vertex buffers, and shader fragments. None of these have anything to do with state.
The stateful parts of the OpenGL API are things like the current value set in glColor, the contents of the matrix stack, and lighting parameters. A lot of this stuff never even crosses into GPU memory in the first place, it is handled on the CPU by the OpenGL libraries. And a lot of it has been removed in newer versions of the API.
I expect that the idea is that instead of calls like glClearBuffer(...) which take their context from the program's global environment, you'd have calls like glClearBuffer(context, ...). The point of this would be to make it easier for a given program to work with multiple contexts at once, e.g. for mixing render-to-texture with normal rendering. (Note: I am not an OpenGL expert, by any means.)
I'm a game developer. I work with OpenGL. This is exactly what's meant when people bitch about OpenGL being stateful. That and the selector states, which make it annoying to write libraries that target OpenGL and work together nicely.