Getting newer core in windows

Is there any way to get openGL core 2.x on windows without using extensions? I just can’t believe there is no way to use newer functions than in 1.1 in windows without using extensions.

TiA for all help.

The Application Binary Interface is the GL 1.1 dll.
That’s it.
Believe it or not it is true.
Now, is that a problem for you ? Do you prefer the D3D system where you need a new dll every month ?

You can download newer drivers from NVIDIA or ATI. That’ll give you the option of dropping “ARB” endings from some function names. Only real difference…

I just can’t believe there is no way to use newer functions than in 1.1 in windows without using extensions.
You’re not using extensions; you’re simply getting the function pointers. You have to do this manually because, as Zbuffer pointed out, the library file you linked to only loads the 1.1 pointers automatically.

Feel free to use extension loaders like GLew or GLee, both of which have very liberal licenses.

Just ot set this straight, this is a Microsoft issue (the opengl32.dll shipped with Windows only exports the 1.1 spec). Under Vista, you can access functions up to 1.4 statically, but you’ll still need to treat the rest as extensions.

The issue is even more complicated on Linux, where the OpenGL shared object is a moving target (different Mesa versions, different drivers etc). What I do in OpenTK, is try to load all functions as extensions, and for each core function that fails try to use its static entry point. This works well enough on Windows/Linux/Mac, at the expense of slower startup time (querying all extensions takes a few milliseconds).

The best solution is to follow Korval’s advice and use Glew or Glee to make your life easy.

Originally posted by Stephen A:
Under Vista, you can access functions up to 1.4 statically
Not true.
That would make OpenGL applications developed under Vista incompatible to all previous Windows NT based OSes (NT/2000/XP) and that’s simply not the case.

Originally posted by Relic:
[quote]Originally posted by Stephen A:
Under Vista, you can access functions up to 1.4 statically
Not true.
That would make OpenGL applications developed under Vista incompatible to all previous Windows NT based OSes (NT/2000/XP) and that’s simply not the case.
[/QUOTE]I just tested opengl32.dll and it still exposes the same old 1.1 subset. I thought that this had changed, since Microsoft actually implemented OpenGL functionality up to 1.4, but it seems I was mistaken.

In any case, I fail to see how this would hurt portability. Doesn’t Mesa3d do this on every major update? As long as you load extensions correctly you will be able to use the static export on newer platforms and the function pointer on older - Glee, Glew, the Tao Framework and OpenTK all work like this.

Thanks alot for the help. I’m starting to come to terms with it now. I successfully used point distance attenuation with an extension (or getting their function pointers atleast) and it seems to work fine.

I have however encountered another problem, and since this forum seems to be absolutely buzzing I thought I might ask about it too here:

I can’t get glEnable(GL_POINT_SMOOTH) to work, my points are still square. I’ve read that GL_BLEND needs to be enabled but that didn’t seem to do any difference.

My code is based on the nehe tutorials and example code from the book: beginning openGl game programming.

code: http://rafb.net/p/WyqoVF59.html

Make sure you set the blend mode properly:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

If that doesn’t work, try:

glEnable(GL_ALPHA_TEST);
glAlphaTest(GL_GREATER, 0.5);

If that doesn’t work either, it might be a driver issue. I’m not sure how well defined point smoothing is in the spec, and it isn’t used that often in applications.

None of them worked, I think however that there is some problem elsewhere in my code. Because I had an example (which I now have lost) in which it worked. The squares became circles.

But now that I come to think of it I did lose it when I formatted a drive and reinstalled windows upon which I also installed new drivers. Could be it.

In any case, I fail to see how this would hurt portability.
If you would link against an export library which contains function pointers of a higher version of OpenGL and run this on a system with only OpenGL 1.1 entry points you would get the famous message box about missing entry points inside a DLL.
That is, all additional function pointers above OpenGL 1.1 need to be fetched with wglGetProcAddress forever.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.