thor82
uhm se non ricordo male avevo utilizzato il variare l'alpha channel della texture in maniera proporzionale all'altezza (e inversamente per l'altra texture)
la texture però dev'essere mappata per ogni vertice
Perciò avevi utilizzato la "multi-texture" aumentando progressivamente l'opacità di una delle due texture?
La multi-texture la faccio così:
Codice:
[...]
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, texture[1]);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTranslatef(0.0f,-2.0f,z);
glRotatef(135 + xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glPushMatrix();
glBegin(GL_QUADS);
for (int x = 0; x<44; x++)
{
for (int y = 0; y<44; y++)
{
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x)/44.0f, float(y)/44.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x)/44.0f, float(y)/44.0f);
glVertex3f(terrain [x][y][0], terrain [x][y][1], terrain [x][y][2]);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x)/44.0f, float(y+1)/44.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x)/44.0f, float(y+1)/44.0f);
glVertex3f(terrain [x][y+1][0], terrain [x][y+1][1], terrain [x][y+1][2]);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x+1)/44.0f, float(y+1)/44.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x+1)/44.0f, float(y+1)/44.0f);
glVertex3f(terrain [x+1][y+1][0], terrain [x+1][y+1][1], terrain [x+1][y+1][2]);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, float(x+1)/44.0f, float(y)/44.0f);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, float(x+1)/44.0f, float(y)/44.0f);
glVertex3f(terrain [x+1][y][0], terrain [x+1][y][1], terrain [x+1][y][2]);
}
}
glEnd();
[...]
[Come puoi vedere in questo momento sto testando il multi-texturing di due sole texture spiaccicate per tutto il terreno
]
Ma come fai a controllare l'apha delle texture con il multi-texturing?