Значение glGenBuffers равно NULL, что приводит к нарушению доступа 0x0000000 при использовании glew - PullRequest
2 голосов
/ 16 февраля 2011

> У меня есть Visual Studio C ++ Express и NVIDIA GeForce 7900 GS. Я использую glew, чтобы получить расширения openGL. При вызове glGenBuffers происходит сбой, так как указатель NULL tho. У меня есть открытый контекст GL, прежде чем я сделаю вызов (wglGetCurrentContext ()! = NULL). Я вызываю glewInit () перед вызовом. glewGetString (GLEW_VERSION) возвращает GLEW_VERSION_1_5. Что я делаю неправильно ? Карта слишком старая? Это водитель?

Ответы [ 5 ]

5 голосов
/ 21 сентября 2012

Не забудьте сделать вызов glewInit() в своем коде, чтобы получить действительные указатели на функции GL.

Надеюсь, это поможет.

1 голос
/ 16 февраля 2011

Не видя ваш код, это будет трудно сказать, но то, что вы пытаетесь сделать, похоже, очень поможет, если использовать GLee .Он предназначен для загрузки всех текущих расширений, и у вас есть возможность проверить, что поддерживается, например:

#include <gl\GLee.h>          // (no need to link to gl.h) 

...

if (GLEE_ARB_multitexture)    //is multitexture support available?
{
  glMultiTexCoord2fARB(...);  //safe to use multitexture
}
else
{
 //fallback
}

Выше было бесстыдно скопировано / вставлено с сайта GLee , ноотображает функциональность, которую я пытаюсь продемонстрировать.

0 голосов
/ 01 ноября 2014

Вам нужно вызвать glewInit () post, имеющей действительный контекст. И это было бы в мире glew после того, как вы вызвали glfwMakeContextCurrent (myWindow);

0 голосов
/ 17 февраля 2011

Проверьте, поддерживается ли на самом деле желаемое расширение, проверив строку, возвращаемую glGetString (GL_EXTENSIONS);если это не так, вы знаете, что вызывает ваши проблемы.

0 голосов
/ 17 февраля 2011

Я действительно столкнулся с этой проблемой с GLEW.Для меня это сводило на нет указатель на функцию для glGenerateMipmap.Я исправил это, просто восстановив указатель на соответствующую функцию.Это мой пример в Linux:

glGenerateMipmap = (void(*)(GLenum))
    glXGetProcAddressARB((GLubyte*)"glGenerateMipmap");

Существует эквивалент WGL для glXGetProcAddress;Я просто не помню имя на макушке.Попробуйте вручную восстановить функции, используя этот метод.Если вы сталкиваетесь с многими функциями, которые являются нулевыми, что-то определенно не так в вашем процессе установки.Единственными другими функциями, которые, как я помню, пришлось восстановить, были glGenVertexArrays, glBindVertexArray и glDeleteVertexArrays.Если ваш glGenBuffers равен нулю, вероятнее всего, что glBindBuffer и glDeleteBuffers также равны нулю.(

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...