Part of the Khronos Group

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 3 of 3

Thread: help: problem with glGenVertexArrays()

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Intern Contributor
    Join Date
    Jan 2008
    phobos, mars

    help: problem with glGenVertexArrays()

    I just installed a new video card (GTX 680) in my computer (64-bit ubuntu linux v12.04) and installed the latest nvidia driver (v310.19) and updated my GLEW files to v190. I updated my GL and GLX include files from the nvidia driver, and updated my GLEW include and source files from the new GLEW files.

    Now my 3D engine doesn't work. BTW, it did run on the new graphics card before I updated the drivers and GLEW (I'm about 99% sure of that).

    The problem is, the OpenGL function glGenVertexArrays(1, &vaoid) always returns a value of zero no matter how many times I call the function, and no matter how many VAO identifiers I ask the function to generate.

    Does anyone know what this problem is... or might be?

    I cut and paste the section of code where the problem occurs. Note that I just added all those glGetError() calls to debug what's happening. Note that ALL of the glGetError() calls return zero, indicating no errors. However, it seems to me that glGetVertexArrays() returning a value of zero IS an error (at least on its part).

    Note that it does return valid identifiers for the IBO and VBO (values == 1 and 2).

    Note that this error is happening the first time glGetVertexArrays() is being called after my program starts up. Also note that the same problem happens whether I compile the program into a 32-bit executable or a 64-bit executable (both of which ran before).

    My current code is OpenGL v3.20 level. I upgraded my GPU to update my engine to OpenGL and GLSL v4.30 level.

    Hmmmm. During startup I print out a whole pile of xwindows, GLX and GL values, and I notice the following string prints out for glGetString(GL_VERSION):

    2.1.2 NVIDIA 313.09

    What is the 2.1.2 supposed to be? The version of OpenGL? If so, that appears to be a version before the VAO was supported. If so, is there some new call that's now required to specify what version of OpenGL my program intends to access... and maybe it defaults to v2.12 if nothing is specified? (Of course, I don't think there ever was a version 2.12 of OpenGL).

    Also, what is the 313.09 supposed to be? The driver was supposed to be 310.19 on the nvidia website (and that is still the version on their website today, so I don't think v313.09 even exists yet).

    Code :
      u32 vaoie = 0;
      u32 vaoif[4];
      vaoif[0] = 0;
      vaoif[1] = 0;
      vaoif[2] = 0;
      vaoif[3] = 0;
      error = glGetError();
      error = glGetError();
      glGenBuffers (1, (GLuint*)&iboid);                 // OpenGL - create IBO identifier
      error = glGetError();
      glGenBuffers (1, (GLuint*)&vboid);                 // OpenGL - create VBO identifier
      error = glGetError();
      glGenVertexArrays (1, (GLuint*)&vaoid);            // OpenGL - create VAO identifier
      error = glGetError();
      glGenVertexArrays (1, (GLuint*)&vaoie);
      error = glGetError();
      glGenVertexArrays (4, (GLuint*)&vaoif[0]);
      error = glGetError();
      if (iboid <= 0) { return (CORE_ERROR_INTERNAL); }  // error - invalid IBO identifier
      if (vboid <= 0) { return (CORE_ERROR_INTERNAL); }  // error - invalid VBO identifier
      if (vaoid <= 0) { return (CORE_ERROR_INTERNAL); }  // error - invalid VAO identifier

    Last edited by bootstrap; 12-27-2012 at 12:39 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts