glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, Floor.id);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,/*GL_MIRRORED_REPEAT_ARB*/GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,/*GL_MIRRORED_REPEAT_ARB*/GL_REPEAT);
if(GLSL)
{
glUseProgramObjectARB(FresnelGLSL);
glUniform1iARB(glGetUniformLocationARB(BumpGLSL, "diffuse"), 0);
glUniform3fARB(glGetUniformLocationARB(BumpGLSL, "eyepos"), px, py, pz);
}
glBegin(GL_QUADS);
glColor4f(1,1,1,1);
glNormal3f(0,1,0);
for (tx=-16; tx<16; tx+=4)
for (tz=-6; tz<6; tz+=4)
if(Frustum.SphereInFrustum(tx+2, 0, tz+2, 2.83))
{
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0, 0);
glVertex3f(tx, 0, tz+4);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2, 0);
glVertex3f(tx+4, 0, tz+4);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2, 2);
glVertex3f(tx+4, 0, tz);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0, 2);
glVertex3f(tx, 0, tz);
}
glEnd();
if(GLSL)
glUseProgramObjectARB(0);