¿Como se hace con los polígonos? No me sale.
void display(void)
{
GLfloat position[] = { 0.0, 0.0, 1.0, 0.0 };
GLfloat mat_cube1[] = { 0.75, 0.75, 0.0, 1.0 };
GLfloat mat_cube2[] = { 0.0, 0.75, 0.75, 1.0 };
if (polySmooth)
glClear (GL_COLOR_BUFFER_BIT);
else
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glTranslatef (0.0, 0.0, -8.0);
glLightfv (GL_LIGHT0, GL_POSITION, position);
glBlendFunc (GL_SRC_ALPHA_SATURATE, GL_ONE);
glPushMatrix ();
glRotatef (30.0, 1.0, 0.0, 0.0);
glRotatef (60.0, 0.0, 1.0, 0.0);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_cube1);
auxSolidCube (1.0, 1.0, 1.0);
glPopMatrix ();
glTranslatef (0.0, 0.0, -2.0);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_cube2);
glRotatef (30.0, 0.0, 1.0, 0.0);
glRotatef (60.0, 1.0, 0.0, 0.0);
auxSolidCube (1.0);
glPopMatrix ();
glFlush ();
}
Esto q está extraido del red book , no me funciona
falta activarlo.
glEnable(GL_POLYGON_SMOOTH);
Cita de: "marcode"falta activarlo.
glEnable(GL_POLYGON_SMOOTH);
Bueno ya. Es q eso lo hago antes. Perdón por la omisión. Pero esto te funciona?
Pues la verdad que ahora que lo pienso nunca me ha funcionado, solo con lineas y puntos. Me parece que esa función no está en la implementación y quizás no funciona en todas las tarjetas.
Prueba esto otro de cosecha propia.
DibujarCosa();
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST); // o GL_FASTEST
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glPolygonMode(GL_FRONT, GL_LINE);
DibujarCosa();
glDisable(GL_BLEND);
glPolygonMode(GL_FRONT, GL_FILL);
Cita de: "marcode"Pues la verdad que ahora que lo pienso nunca me ha funcionado, solo con lineas y puntos. Me parece que esa función no está en la implementación y quizás no funciona en todas las tarjetas.
Prueba esto otro de cosecha propia.
DibujarCosa();
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST); // o GL_FASTEST
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glPolygonMode(GL_FRONT, GL_LINE);
DibujarCosa();
glDisable(GL_BLEND);
glPolygonMode(GL_FRONT, GL_FILL);
:) Que truquitor...... No lo he probado pero sé que quieres hacer. Pero eso lo hará ir más lento ¿no?. Dibujo 200.000-1M triángulos. He leido algo por ahi del multisampling. Alguien sabe como funciona? Ahora cuando llegué a casa pongo las funciones a ver si alguien ha logrado que funcione y me explica como.
Claro, para tantos triángulos es una locura dibujar todo 2 veces. Esto más bien para muros y edificios, o algunas rectas que parecen serruchos y dan mucho el cante.
Pero el multisample también chupa lo suyo y no sirve para el modo ventana. si usas glut pruébalo pasando a la función de inicio GLUT_MULTISAMPLE y glEnable(GL_MULTISAMPLE). Sin glut es más coñazo iniciarlo.
Otra opción es usar un buffer de acumulación, que tiene más calidad que el multisample.