
Test if extension is available
Posted Tuesday, 1 April, 2008 - 15:26 by teichgraf inHello,
I am asking me right now, if OpenTK has a helper method, which tests if a certain OpenGL extension is available?
Something like:
public static bool IsExtAvailable(string ext) { return GL.GetString(StringName.Extensions).Contains(ext); }
Or is there another way to test for extensions at runtime?


Comments
Re: Test if extension is available
Assuming this ain't an april fool's joke and the question is serious: This is covered by the functions
GL.SupportsExtension / GL.SupportsFunctionIt might be useful to create an overload with enum as parameter, instead of a string. (to avoid typing errors) Anyone besides objarni votes for that idea? ;)
Re: Test if extension is available
Thanks!
I looked for
Is*orHas*kind of method signature. But I didn't foundGL.SupportsExtension. Sorry!An enum overload would be really useful.
Re: Test if extension is available
Yeah, I second the enum overload. That would be very useful, if just for the intellisense.
Re: Test if extension is available
i agree ... an enum overload would be helpful
Re: Test if extension is available
I STRONGLY DISAGREEE!!!!
.
.
.
.
.
.
.
.
.
.
.
.
Fooled ya! ;)
Re: Test if extension is available
It's known that you're into coder pr0n and overloads like this are your thing ;)
Re: Test if extension is available
thanks really cool demo given 256 bytes :)
Re: Test if extension is available
Something like this would work:
A prettier solution would be to use a struct with constants:
The latter could be added to the generator, although it might be simpler to write by hand (but more boring).
Also happy April's fool!
Re: Test if extension is available
Mhmm I don't know why the discussion moved to pm's *apologizes*
Imo both solutions have their benefits:
The advantage of easy iteration through all extensions for debugging purposes.
The disadvantage of this is obviously that it's not as nice as Extension.Version12 and not "C#-ish" (C) objarni. But on the other hand, it's exactly the token name that GL expects.
Example:
GL.SupportsExtension( Extension.WGL_ARB_randomly_chosen_token ); // new enum overload
GL.SupportsExtension( Extension.WGL_ARB_randomly_chosen_token.ToString() ); // string param
Nicer to handle, but requires some extra thinking/understanding how Extension.WglArbRandomlyChosenToken translates into WGL_ARB_randomly_chosen_token.
Example:
GL.SupportsExtension( Extension.WglArbRandomlyChosenToken ); // string param
I have no clear favorite, but if you put a pistol to my head I'd say 1) because it's closer to the C API.
Re: Test if extension is available
Sleeping over it, I created the function using an enum for now. Imo it will be much less confusing to the user, since it's more logical to query for presence of GL_ARB_vertex_buffer_object than GLArbVertexBufferObject. It should also aid in looking up the spec on opengl.org, or googling for tutorials.
The overload can be used like this: