All pastes #818044 Raw Edit

Miscellany

public cpp v1 · immutable
·published 2007-12-16 01:24 UTC
rendered paste body
void Terrain :: createGLList(){	if(glList != 0)		glDeleteLists(glList, 1);		glList = glGenLists(1);	glNewList(glList, GL_COMPILE);		if(isTextured == true)	{		glGenTextures(1, &glTexture);		glBindTexture(GL_TEXTURE_2D, glTexture);				glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);				glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);				gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE,texture);		glBindTexture(GL_TEXTURE_2D, glTexture);		glEnable(GL_TEXTURE_2D);			}		glPushMatrix();		glScalef(1.0, 1.0, heightScale);		glBegin(GL_TRIANGLES);		for(uint j(0); j < height - 1; j++)		{			for(uint i(0); i < width - 1; i++)			{							vec3 & p1 = getCoords(i    , j    );				vec3 & p2 = getCoords(i + 1, j    );				vec3 & p3 = getCoords(i + 1, j + 1);				vec3 & p4 = getCoords(i    , j + 1);								vec3 & n1 = getNormal(i    , j    );				vec3 & n2 = getNormal(i + 1, j    );				vec3 & n3 = getNormal(i + 1, j + 1);				vec3 & n4 = getNormal(i    , j + 1);								glNormal3fv(n1);				if(isTextured == true)					glTexCoord2f(i / (float)(width - 1), j / (float)(height - 1));				glVertex3fv(p1);								glNormal3fv(n2);				if(isTextured == true)					glTexCoord2f(i / (float)(width - 1), (j + 1) / (float)(height - 1));				glVertex3fv(p2);								glNormal3fv(n3);				if(isTextured == true)					glTexCoord2f((i + 1) / (float)(width - 1), (j + 1) / (float)(height - 1));				glVertex3fv(p3);								glNormal3fv(n1);				if(isTextured == true)					glTexCoord2f(i / (float)(width - 1), j / (float)(height - 1));				glVertex3fv(p1);								glNormal3fv(n3);				if(isTextured == true)					glTexCoord2f((i + 1) / (float)(width - 1), (j + 1) / (float)(height - 1));				glVertex3fv(p3);								glNormal3fv(n4);				if(isTextured == true)					glTexCoord2f(i / (float)(width - 1), (j + 1) / (float)(height - 1));				glVertex3fv(p4);				/*				std::cout << "u, v : " << (float)i / (width - 1) << ", " << (float)(j) / (height - 1) << std::endl;				std::cout << "u, v : " << (float)(i + 1) / (width - 1) << ", " << (float)(j) / (height - 1) << std::endl;				std::cout << "u, v : " << (float)(i) / (width - 1) << ", " << (float)(j + 1) / (height - 1) << std::endl;				std::cout << "u, v : " << (float)(i + 1) / (width - 1) << ", " << (float)(j + 1) / (height - 1) << std::endl << std::endl;				*/			}		}		glEnd();	glPopMatrix();		if(isTextured == true)	{		glDisable(GL_TEXTURE_2D);	}	glEndList();}