PDA

View Full Version : - GL_ARB_vertex_buffer_object - not recognoized on some win7 systems



bonsalty
10-05-2012, 01:50 PM
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

.
.
}




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 ?

bonsalty
10-05-2012, 04:03 PM
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.

mhagain
10-05-2012, 05:23 PM
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.

Alfonse Reinheart
10-05-2012, 06:51 PM
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? (http://support.amd.com/us/gpudownload/windows/legacy/Pages/legacy-radeonaiw-vista64.aspx) They even have Windows 8 drivers for the HD 2000-4000 series cards. (http://support.amd.com/us/kbarticles/Pages/catalystlegacywin8.aspx) I found both of those from AMD's driver download page. (http://support.amd.com/us/Pages/AMDSupportHub.aspx)

V-man
10-06-2012, 03:57 AM
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_Mistakes#Extensions_and_OpenGL_Versions