Jake
2004.09.06, 01:57 PM
I am going to try to make a lightmap plus a detail texture for my terrain engine, and I can not get it to render without crashing. It just loads the window and then crashes with a signal 11 (I think it was 11). Here is my code -
EDIT : The 1 texture code works fine, so the data should be correct.
Render -
glDisable( GL_LIGHTING );
glActiveTextureARB( GL_TEXTURE0_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, gv->texture[4] );
// TEXTURE-UNIT #1:
glActiveTextureARB( GL_TEXTURE1_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, gv->texture[5] );
for (j = 0; j < theQuadCount[i]; j++)
{
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].w]/1024.0), (theVertex[2+theQuad[ i ][ j ].w])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].a]/div,theUV[1+theQuad[ i ][ j ].a]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].w],theVertex[1+theQuad[ i ][ j ].w],theVertex[2+theQuad[ i ][ j ].w]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].x]/1024.0), (theVertex[2+theQuad[ i ][ j ].x])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].b]/div,theUV[1+theQuad[ i ][ j ].b]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].x],theVertex[1+theQuad[ i ][ j ].x],theVertex[2+theQuad[ i ][ j ].x]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].y]/1024.0), (theVertex[2+theQuad[ i ][ j ].y])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].c]/div,theUV[1+theQuad[ i ][ j ].c]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].y],theVertex[1+theQuad[ i ][ j ].y],theVertex[2+theQuad[ i ][ j ].y]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].z]/1024.0), (theVertex[2+theQuad[ i ][ j ].z])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].d]/div,theUV[1+theQuad[ i ][ j ].d]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].z],theVertex[1+theQuad[ i ][ j ].z],theVertex[2+theQuad[ i ][ j ].z]);
}
glEnd();
Load detail -
glBindTexture( GL_TEXTURE_2D, texture[ textureOn ] );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST );
gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, size[textureOn], size[textureOn], GL_RGB,GL_UNSIGNED_BYTE, [imageRep[textureOn] bitmapData]);
Load lightmap -
glBindTexture(GL_TEXTURE_2D, texture[ textureOn ]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
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);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, 3, size[textureOn],size[textureOn], 0, GL_RGB, GL_UNSIGNED_BYTE, [imageRep[textureOn] bitmapData]);
EDIT : The 1 texture code works fine, so the data should be correct.
Render -
glDisable( GL_LIGHTING );
glActiveTextureARB( GL_TEXTURE0_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, gv->texture[4] );
// TEXTURE-UNIT #1:
glActiveTextureARB( GL_TEXTURE1_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, gv->texture[5] );
for (j = 0; j < theQuadCount[i]; j++)
{
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].w]/1024.0), (theVertex[2+theQuad[ i ][ j ].w])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].a]/div,theUV[1+theQuad[ i ][ j ].a]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].w],theVertex[1+theQuad[ i ][ j ].w],theVertex[2+theQuad[ i ][ j ].w]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].x]/1024.0), (theVertex[2+theQuad[ i ][ j ].x])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].b]/div,theUV[1+theQuad[ i ][ j ].b]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].x],theVertex[1+theQuad[ i ][ j ].x],theVertex[2+theQuad[ i ][ j ].x]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].y]/1024.0), (theVertex[2+theQuad[ i ][ j ].y])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].c]/div,theUV[1+theQuad[ i ][ j ].c]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].y],theVertex[1+theQuad[ i ][ j ].y],theVertex[2+theQuad[ i ][ j ].y]);
glMultiTexCoord2fARB( GL_TEXTURE0_ARB, (theVertex[theQuad[ i ][ j ].z]/1024.0), (theVertex[2+theQuad[ i ][ j ].z])/1024.0);
glMultiTexCoord2fARB( GL_TEXTURE1_ARB, theUV[theQuad[ i ][ j ].d]/div,theUV[1+theQuad[ i ][ j ].d]/div );
glVertex3f(theVertex[theQuad[ i ][ j ].z],theVertex[1+theQuad[ i ][ j ].z],theVertex[2+theQuad[ i ][ j ].z]);
}
glEnd();
Load detail -
glBindTexture( GL_TEXTURE_2D, texture[ textureOn ] );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST );
gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, size[textureOn], size[textureOn], GL_RGB,GL_UNSIGNED_BYTE, [imageRep[textureOn] bitmapData]);
Load lightmap -
glBindTexture(GL_TEXTURE_2D, texture[ textureOn ]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
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);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, 3, size[textureOn],size[textureOn], 0, GL_RGB, GL_UNSIGNED_BYTE, [imageRep[textureOn] bitmapData]);