texture_crossbar + nvidia cvards has been discussed before here
anyways its part of opengl1.4 thus it should be supported on your nvidia card (even if its in software only)
dont check the extension string + ‘see’ it doesnt exist + assume it doesnt exist but set up the extension pointers (hmm maybe it doesnt need pointers) + try it out
Crossbar runs just fine in hardware on all nVidia cards from TNT2 at least.
To use it, just check for either of GL_ARB_texture_env_crossbar or GL_NV_texture_env_combine4. The crossbar in tex_env_combine4 is identical to the ARB functionality in the cases that matters.
anyways its part of opengl1.4 thus it should be supported on your nvidia card (even if its in software only)
If supported in HW by NV_texture_env_combine4, it can not be supported in software by ARB_texture_env_crossbar since both NV and ARB extensions use the same tokens TEXTURE<n>_ARB. In other words, it’s not possible to tell the GL “I want to use NV version” or “I want to use ARB version”, you can just tell “I want to use crossbar”.
The crossbar in tex_env_combine4 is identical to the ARB functionality in the cases that matters.
There’s a slight difference in fact, though it’s really minor. It’s about what happens when accessing a texture unit that is not bound correctly.
Originally posted by vincoof: There’s a slight difference in fact, though it’s really minor. It’s about what happens when accessing a texture unit that is not bound correctly.
That’s why Humus said “in the cases that matter”. Crossbar says that incorrectly bound textures disable texture blending on that texture unit. Combine4 says that the texture returns all white texels. Either way, this isn’t supposed to happen in a well-written application, so it doesn’t matter.
Note that crossbar was made part of the core in OpenGL 1.4. The spec now says that the results in the above case are “undefined”, so both the crossbar and the combine4 behavior is considered correct.
Originally posted by Tom Nuydens:
[b] Note that crossbar was made part of the core in OpenGL 1.4. The spec now says that the results in the above case are “undefined”, so both the crossbar and the combine4 behavior is considered correct.
– Tom[/b]
IMO – This is what the ARB should have done when standardizing ARB_texture_env_crossbar. All this mess over what happens in a case no one cares about, anyway.
As far as programming goes, feel free to use the crossbar functionality if you find:
OpenGL 1.4 or better
ARB_texture_env_crossbar
NV_texture_env_combine4
The enums are the same, and the functionality is the same except for the goofy “what if you reference a bad texture” case.
Originally posted by V-man:
[b]I remember Matt saying that the ARB version of crossbar was incompatible with NV hardware, so they defined their own extension.
I’m sure there was some other valid reason.
Not a serious problem, so I dont mind[/b]
If I recall correctly, NV_texture_env_combine4 came out way before ARB_texture_env_crossbar. (I was working for Intel at the time…) This incompatibility was definitely an issue when crossbar was standardized.