PDA

View Full Version : Libraries



Tresher
08-10-2003, 04:34 AM
Hi,
I`m using MVS c++ 6.0 including the OpenGL 1.1 library. Where can i get newer libraries (1.2 or even 1.3?)(via download or $$$?).
Would a ServicePack for MVS help me getting new libraries ? Or can i get them from Nvidia ? Since they write OpenGL implementations they should distribute libs as well, isn`t it ?
Another problem i have is that depending on the drivers i use (those from Nvidia or from the vendor i bought my Geforce2Pro [Asus]) i get different render results: this means that some features just don`t work with the Detonator drivers while they work perfectly using the drivers from Asus... http://www.opengl.org/discussion_boards/ubb/frown.gif(

nexusone
08-10-2003, 04:55 AM
The core librarys are written by the OS maker, Microsoft has only created library's for openGL 1.1, mostly because they are pushing Direct-X.

But since the main part of openGL is in the openGL video drivers which are made by the video card people, you can access the newer 1.2+ features by using what is called extentions.
Now the video makers also add their own openGL extension that are for special rendering functions that maybe only valid on their video card.
So one of the thing you have to do when writting a openGL application which uses advance openGL features is request the openGL video drivers give you a list avalible extentsion.

You can do a search on this topic since it has been asked 1000 times, also you will find book and examples of how to use extensions in windows.


Originally posted by Tresher:
Hi,
I`m using MVS c++ 6.0 including the OpenGL 1.1 library. Where can i get newer libraries (1.2 or even 1.3?)(via download or $$$?).
Would a ServicePack for MVS help me getting new libraries ? Or can i get them from Nvidia ? Since they write OpenGL implementations they should distribute libs as well, isn`t it ?
Another problem i have is that depending on the drivers i use (those from Nvidia or from the vendor i bought my Geforce2Pro [Asus]) i get different render results: this means that some features just don`t work with the Detonator drivers while they work perfectly using the drivers from Asus... http://www.opengl.org/discussion_boards/ubb/frown.gif(

Tresher
08-10-2003, 07:03 AM
Thanks for your answer,
first I wanted to avoid using extensions. But if really everybody (even professionals) have to use extensions, I will stop complaining. About the 'special feature' that doesn`t work:
The only call that might be not a every-day call is: glLightModeli(0x81F8 , 0x81FA); //EXT_SEPARATE_spec
it is used to separate specular color. I used it since MVS hasn`t known the constant GL_SEPARATE_SPECULAR_COLOR. So i browsed through the web-pages of Silicon Graphics until i found these nice hex numbers AND THEY WORKED ! At least it worked well with the drivers of ASUS.
To give you some more information: it is all about a background texture that isn`t displayed (the other texture I use and on which the specular hightlights are drawn works fine).
Maybe the code which i use for creating the background picture will help you:

void init_background(void)
{
bitm_info = _bitmap(NULL,IDB_BITMAP1, MEM_M);
glGenTextures(1, &texName);
glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, bitm_info.width, bitm_info.height,
0, GL_BGR_EXT, GL_UNSIGNED_BYTE, bitm_info.pBit);
if(bitm_info.pHeap != NULL)
free(bitm_info.pHeap);
else FreeResource(bitm_info.hresource);

list_back = glGenLists(1);
glNewList(list_back, GL_COMPILE);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(-1.0,1.0,-1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, texName);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glDepthMask(GL_FALSE);
glEnable(GL_BLEND);
glDisable(GL_LIGHTING);
glColor3f(0.0,0.0,0.0);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0);
glTexCoord2f(1.0, 768.0/1024.0); glVertex2f(1.0,1.0);
glTexCoord2f(0.0, 768.0/1024.0); glVertex2f(-1.0,1.0);
glEnd();
glEnable(GL_LIGHTING);
glDisable(GL_BLEND);
glDepthMask(GL_TRUE);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glEndList();
}

Thanks for further help !