я использую wlgGetProcAddress
чтобы получить функции, используя контекст, созданный с wglCreateContext
, Я установил контекст с wglMakeCurrent
, Я получаю действительный указатель на функцию glGetStringi
, но я получаю NULL
за glGetString
, я думал так glGetString
а также glGetStringi
были введены в той же версии OpenGL (1.0). Любые идеи, почему я получаю это NULL
?
const GLubyte* (*glGetString)(GLenum);
const GLubyte* (*glGetStringi)(GLenum, GLuint);
glGetString = reinterpret_cast<decltype(glGetString)>(wglGetProcAddress("glGetString"));
glGetStringi = reinterpret_cast<decltype(glGetStringi)>(wglGetProcAddress("glGetStringi"));
В случае, если это имеет значение, у меня Radeon HD 7950 с версией драйвера 13.251.0.0.
glGetStringi
был введен намного позже, чем 1,0 — я считаю, что это 3,3. Что еще хуже, на профиле ядра 3.3+ вы не можете использовать glGetString(GL_EXTENSIONS)
, но необходимо использовать glGetStringi
, который недоступен для низкопрофильных версий.
Документация MSDN гласит wglGetProcAddress
возвращает только адреса для функций расширения. И «расширение» в их терминах — это все, чего нет в GL 1.1.
Пожалуйста, прочитайте https://www.opengl.org/discussion_boards/showthread.php/168281-Can-t-get-wglGetProcAddress-to-work-in-opengl-3-1
Других решений пока нет …