iv'e added a heightmap terrain, but no matter how i go about it, I cant get the camera to collide/stay on top of the terrain....any thoughts?
terrain code:
all help will be much appreciated..Code:const char heightmapFilename[] = "Terrains/heightmap.raw"; const float MAX_HEIGHT = 30.0f; const float SCALE_FACTOR = 256.0f / MAX_HEIGHT; void DrawTerrain() { glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTextureARB"); glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress("glMultiTexCoord2fARB"); FILE *pFile = fopen(heightmapFilename, "rb"); fread(&heightmap, TERRAIN_SIZE * TERRAIN_SIZE, 1, pFile); fclose(pFile); for (int z = 0; z < TERRAIN_SIZE - 1; ++z) { glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[14]); glActiveTextureARB(GL_TEXTURE1_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[0]); glActiveTextureARB(GL_TEXTURE2_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[0]); glBegin(GL_TRIANGLE_STRIP); for (int x = 0; x < TERRAIN_SIZE; ++x) { // render two vertices of the strip at once float scaledHeight = heightmap[z * TERRAIN_SIZE + x] / SCALE_FACTOR; float nextScaledHeight = heightmap[(z + 1)* TERRAIN_SIZE + x] / SCALE_FACTOR; float color = 0.5f + 0.5f * scaledHeight / MAX_HEIGHT; float nextColor = 0.5f + 0.5f * nextScaledHeight / MAX_HEIGHT; //glColor3f(color, color, color); glTexCoord2f((GLfloat)x/TERRAIN_SIZE*8, (GLfloat)z/TERRAIN_SIZE*8); glVertex3f(static_cast<GLfloat>(x - TERRAIN_SIZE/2), scaledHeight - 5, static_cast<GLfloat>(z - TERRAIN_SIZE/2)); //glColor3f(nextColor, nextColor, nextColor); glTexCoord2f((GLfloat)x/TERRAIN_SIZE*8, (GLfloat)(z+1)/TERRAIN_SIZE*8); glVertex3f(static_cast<GLfloat>(x - TERRAIN_SIZE/2), nextScaledHeight - 5, static_cast<GLfloat>(z + 1 - TERRAIN_SIZE/2)); } glEnd(); } glActiveTextureARB(GL_TEXTURE0_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[11]); glActiveTextureARB(GL_TEXTURE1_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[0]); glActiveTextureARB(GL_TEXTURE2_ARB); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, g_Texture[0]); glBegin(GL_QUADS); glTexCoord2f(-40.0, 0.0);glVertex3f(-200, 0, 200); glTexCoord2f(-40.0, 40.0);glVertex3f(-200, 0, -200); glTexCoord2f(40.0, 40.0);glVertex3f(200, 0, -200); glTexCoord2f(40.0, 0.0);glVertex3f(200, 0, 200); glEnd(); }
-psychopath



LinkBack URL
About LinkBacks



)