Necesito tener un hemisferio en OpenGL. Encontré una función drawSphere que modifiqué para dibujar la mitad de los lats (que termina dibujando la mitad de la esfera) que es lo que quería. Lo hace correctamenteAsignación de textura de hemisferio OpenGL
Sin embargo, no sé qué debería hacer con glTexCoordf para obtener las texturas para mapear correctamente en esta media esfera. Realmente no soy genial con OpenGL, y he probado innumerables variaciones, pero no puedo conseguir que las texturas aparezcan correctamente en él.
void drawHemisphere(double r, int lats, int longs)
{
int i, j;
int halfLats = lats/2;
for(i = 0; i <= halfLats; i++)
{
double lat0 = M_PI * (-0.5 + (double) (i - 1)/lats);
double z0 = sin(lat0);
double zr0 = cos(lat0);
double lat1 = M_PI * (-0.5 + (double) i/lats);
double z1 = sin(lat1);
double zr1 = cos(lat1);
glBegin(GL_QUAD_STRIP);
for(j = 0; j <= longs; j++)
{
double lng = 2 * M_PI * (double) (j - 1)/longs;
double x = cos(lng);
double y = sin(lng);
// glTexCoordf()
glNormal3f(x * zr0, y * zr0, z0);
glVertex3f(x * zr0, y * zr0, z0);
// glTexCoordf()
glNormal3f(x * zr1, y * zr1, z1);
glVertex3f(x * zr1, y * zr1, z1);
}
glEnd();
}
}
¿Alguien tiene alguna idea de qué valores debería poner? O lo que necesito calcular para eso?
Gracias!
En general, una textura cuadrada no se puede mapear directamente en una (hemi) esfera; hay diferentes posibilidades ¿Cómo se ve tu textura? – Thomas
Es para un simple juego de pacman, honestamente incluso una sólida textura amarilla estaría bien, tal vez una cosa amarilla con ojos en ella. No es nada lujoso. – Paul