GL_VERSION returns “4.3.0 - Build 20.19.15.4835”.[1] After turning in last night I thought maybe it wanted a construction like wglGetProcAddress("wglGetProcAddress")
but that doesn’t work either.
Someone here that runs Intel GL drivers can probably set you straight here.
I kind of assume any public software has to also function on Intel. I don’t understand how it can say it’s version 4.3 if it doesn’t have these APIs, unless these aren’t first-class APIs. Khronos’s docs give the impression they are first-class. glSamplerParameteri
is just one example I give. I need a host of APIs that can’t be emulated.
I feel like I must be missing a step, but don’t know why it’s so abstruse either. For reference below is my working code. At the end wglGetProcAddress returns zero for things I’d not expect, such as glClearDepthf
and glSamplerParameteri
but returns nonzero for glBindBufferRange
that I think is 3.0, making me to think I’m missing something in WGL that enables additions that came after 3.0. I think 3.0 is a magical cut off point in the OpenGL timeline, already WGL is a bewildering API since Microsoft doesn’t update it, there’s only word of mouth to go on, or the absurdist extension registry system, e.g. things like wglCreateContextAttribsARB. I think there must be something else like that. Still I’m looking at some wxWidgets code for reference and not seeing anything else in it not present here.
SetPixelFormat(dc,i,&pfd);
HGLRC c = wglCreateContext(dc);
if(!c) err:
{
ReleaseDC(DDRAW::window,dc); return 0;
}
wglMakeCurrent(dc,c);
void *f = wglGetProcAddress("wglCreateContextAttribsARB");
wglMakeCurrent(0,0);
wglDeleteContext(c);
if(!f) goto err;
const int al[] =
{
0x2091,4, //major
0x2092,3, //minor
0x2094,DX::debug, //flags
0x9126,1, //core profile
0
};
c = ((HGLRC(WINAPI*)(HDC,HGLRC,const int*))f)(dc,0,al);
if(!c) goto err;
wglMakeCurrent(dc,c);
EDITED: I’ve been working with ANGLE and somewhat frustrated by its incompleteness, and so turned to plain OpenGL for comparison. I’m pretty sure it gets a proper 4.3 context or is able to find the extensions. I think I will have to break into its code later today or tomorrow to see what it does differently. It’s the only strategy I have left.
[1] Intel’s control panel calls this number “Driver version”. Thanks!