windows - glGenBuffers er NULL, der giver en 0x0000000 adgangsfejl, når du bruger glew

Indlæg af Hanne Mølgaard Plasc

Problem



> Jeg har visuel studio c ++ express og en NVIDIA GeForce 7900 GS. Jeg bruger glide til at få adgang til openGL extensions.Calling glGenBuffers styrter som en NULL pointer tho. Jeg har en åben GL kontekst, før jeg laver opkaldet (wglGetCurrentContext ()!=NULL). Jeg ringer glewInit () før opkaldet. glewGetString (GLEW\_VERSION) vender tilbage GLEW\_VERSION\_1\_5. Hvad gør jeg forkert? Er kortet for gammel? Er det føreren?

Bedste reference


Husk at lave et glewInit() opkald i din kode, så du får gyldige pointer til GL-funktioner.


Håber det hjælper.

Andre referencer 1


Uden at se din kode ville det være svært at fortælle, men hvad du forsøger at gøre, ser ud som om det kunne blive hjulpet meget ved at bruge GLee. Den er designet til at indlæse alle nuværende udvidelser, og du har evnen til at kontrollere, hvad der understøttes, f.eks. : [4]


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

...

if (GLEE\_ARB\_multitexture)    //is multitexture support available?
{
  glMultiTexCoord2fARB(...);  //safe to use multitexture
}
else
{
 //fallback
}


Ovennævnte blev skamløst kopieret/indsat fra GLee-siden, men det viser den funktionalitet jeg forsøger at fremvise. [5]

Andre referencer 2


Jeg har faktisk kørt ind i dette problem med GLEW. For mig var det nulstiller funktionspegeren for glGenerateMipmap. Jeg fik det ved blot at gendanne pegeren til den rigtige funktion. Dette er mit eksempel i Linux:


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


Der er en WGL-ækvivalent for glXGetProcAddress; Jeg kan bare ikke huske navnet på toppen af ​​mit hoved. Prøv manuelt at gendanne funktionerne ved hjælp af denne metode. Hvis du kommer på tværs af mange funktioner, der er null, er noget helt sikkert forkert i din installationsproces. De eneste andre funktioner, som jeg husker at skulle gendanne, var glGenVertexArrays, glBindVertexArray og glDeleteVertexArrays. Hvis din glGenBuffers er null, er oddsene, at glBindBuffer og glDeleteBuffers også er null.

Andre referencer 3


Test, om den ønskede udvidelse faktisk understøttes ved at kontrollere strengen, der returneres af glGetString (GL\_EXTENSIONS); hvis det ikke er der, ved du hvad der forårsager dine problemer.

Andre referencer 4


Du skal ringe til glewInit () post med en gyldig kontekst. Og det ville være i glansens verden, efter at du har kaldt glfwMakeContextCurrent (myWindow);