Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 5 of 5

Thread: - GL_ARB_vertex_buffer_object - not recognoized on some win7 systems

  1. #1
    Junior Member Newbie
    Join Date
    Aug 2011
    Location
    Hungary, Budapest
    Posts
    7

    - GL_ARB_vertex_buffer_object - not recognoized on some win7 systems

    Greetings, need some help, ideas!

    I am working on a project , building 3D pipeline models for the waterworks, it uses opengl, freeglut , glew. It is working excelent on many
    computers including mine, have tested on older 32 bit XPs , 64 bit win 7s, but recently I came across a problem on some other. I didnt want to install visual studio 2008 on the problematic systems yet, but need a solution or advise.

    Problem: The program starts and crashes when the pipelines are binded to the VBO.

    (Since the number of pipes are up to 50000 , I use vertex arrays - one vertex array contains twohundred pipes , meaning few thousend vertices each. Generaly I have few dozen of the arrays depending on the total count of pipes to be drawn. I found out, this is the fastest way to use vertex arrays if you want to replace individual pipe positions some time)

    I managed to find this problem with placing MessageBox stops into the code, and at the first rendering it crashes here, marked behind
    the // comment sign:

    void PPipelines::Render(){
    .
    .
    .
    if (vboVerticesID>0 )glDeleteBuffers(1,&vboVerticesID);
    if (vboNormalsID>0 )glDeleteBuffers(1,&vboNormalsID);
    if (vboColorsID>0 )glDeleteBuffers(1,&vboColorsID);


    glGenBuffers(1, &vboVerticesID);
    glBindBuffer( GL_ARRAY_BUFFER, vboVerticesID); // Crash here !!!
    glBufferData( GL_ARRAY_BUFFER, vertices_vbo.size()*sizeof(GL_FLOAT), &vertices_vbo[0], GL_STATIC_DRAW);
    glBindBuffer( GL_ARRAY_BUFFER, 0); // Bind The Buffer

    .
    .
    }

    Click image for larger version. 

Name:	LEOEPA1.jpg 
Views:	88 
Size:	106.4 KB 
ID:	878
    The problem arrises on the binding, now I have placed a safety line behind the calls:
    g_fVBOSupported = IsExtensionSupported( "GL_ARB_vertex_buffer_object" );
    and showed clearly the problem. When the crash appeared on some machines g_fVBOSupported was always false.
    This means that the crash appeared obviosly because of the lack of VBO support.

    And here is the paradox thing:

    Test machine had an older but fair HD 2600 Radeon (supporting OGL 3.1) , 32 bit Windows XP and Win7 installed

    1) GL_ARB_vertex_buffer_object is defined in OpenGl 2.0

    2) The program was running excelent having XP in background.

    3) Program crashed under win7, g_fVBOSupported returned false.


    So the question remains, why it fails on win7. I tried reinstalling drivers, didnt help. What can I do to fix this ?

  2. #2
    Junior Member Newbie
    Join Date
    Aug 2011
    Location
    Hungary, Budapest
    Posts
    7
    Meanwhile I checked versions and seems that only openGL 1.1 is added to win7, wondering why it doesnt get updated with the graphics driver install.

  3. #3
    Senior Member OpenGL Pro
    Join Date
    Jan 2007
    Posts
    1,183
    Either a bad driver or a bad driver installation.

    If the driver was an OEM driver or one provided by Microsoft then it possibly (former case) or definitely (latter case) won't support OpenGL beyond Microsoft's own 1.1 software implementation. So the first thing to do is get your hands on a proper driver from ATI and install that. Unfortunately the 2600 is an older Radeon so you won't be able to get an up to date driver for it, and even more unfortunately AMD don't seem to even provide a download from their own site any more, so you've a search ahead of you.

    The other option is to chuck out the 2600 and put something more recent in; something in the HD 4000 or 5000 series range should be easily obtainable and quite affordable. If it's not your machine to upgrade, or if you have more than one such machine, then this option becomes limited, of course.

  4. #4
    Senior Member OpenGL Guru
    Join Date
    May 2009
    Posts
    4,948
    I checked versions
    What program did you run to look at your GL version?

    Unfortunately the 2600 is an older Radeon so you won't be able to get an up to date driver for it, and even more unfortunately AMD don't seem to even provide a download from their own site any more, so you've a search ahead of you.
    What about this page? They even have Windows 8 drivers for the HD 2000-4000 series cards. I found both of those from AMD's driver download page.

  5. #5
    Super Moderator OpenGL Guru
    Join Date
    Feb 2000
    Location
    Montreal, Canada
    Posts
    4,264
    Quote Originally Posted by bonsalty View Post
    1) GL_ARB_vertex_buffer_object is defined in OpenGl 2.0
    No, that extension is not defined in any GL version. It is an extension.
    You seem to be using the core VBO functions, which require GL 1.5.

    http://www.opengl.org/wiki/Common_Mi...penGL_Versions
    ------------------------------
    Sig: http://glhlib.sourceforge.net
    an open source GLU replacement library. Much more modern than GLU.
    float matrix[16], inverse_matrix[16];
    glhLoadIdentityf2(matrix);
    glhTranslatef2(matrix, 0.0, 0.0, 5.0);
    glhRotateAboutXf2(matrix, angleInRadians);
    glhScalef2(matrix, 1.0, 1.0, -1.0);
    glhQuickInvertMatrixf2(matrix, inverse_matrix);
    glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
    glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);

Posting Permissions

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