Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: samsaga2 en 01 de Enero de 1970, 01:00:00 AM

Título: Dibujar un grid en opengl
Publicado por: samsaga2 en 01 de Enero de 1970, 01:00:00 AM
                                En teoría es una cosa fácil pero en la práctica no tira ni p'atrás.
Tengo un código que dibuja una especie de tablero de ajedrez:

void KKWorld::drawGrid()
{
   const float size = 1.0f;
   const float size2 = size/2.0f;
   
   glDisable(GL_LIGHTING);
   
   for(float i=-5; i <= 5; i += size)
      for(float j=-5; j <= 5; j += size)
      {
          glBegin(GL_QUADS);
            if(int(i+j) % 2)
               glColor3f(1.0f, 1.0f, 1.0f);
            else
               glColor3f(0.0f, 0.0f, 0.0f);
         
            glVertex3f(-size2 + i, 0.0f, -size2 + j);
            glVertex3f( size2 + i, 0.0f, -size2 + j);
            glVertex3f( size2 + i, 0.0f,  size2 + j);
            glVertex3f(-size2 + i, 0.0f,  size2 + j);
           glEnd();
      }
   
   glEnable(GL_LIGHTING);
}

Vale, no problemo, funciona de forma cojonuda.

El intríngulis está en que yo no quiero dibujar GL_QUADS, quiero un wireframe, para ello en teoría bastaría cambiar el GL_QUADS por un GL_TRIANGLE_STRIP, pero el nene no quiere funcionar, cuando lo canvio no dibuja nada.

¿Alguien sabe donde la estoy cagando?
                               
Título: Dibujar un grid en opengl
Publicado por: KAKSTAR en 01 de Enero de 1970, 01:00:00 AM
                                Si no me equivoco y recuerdo mal...

hay alguna funcion para indicar que te dibuje en wireframe independiente del objecto.

Es decir, le decies que te haga un GL_QUAD i luego le dices wireframe...

en esta pagina de silicon graficos hay ejemplos de codigo en opengl, y hay uno de un ajedrez, a lo mejor te sirve:

http://www.sgi.com/software/opengl/example...les/glut/demos/


talueg                                
Título: Dibujar un grid en opengl
Publicado por: Ithaqua en 01 de Enero de 1970, 01:00:00 AM
                                glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

luego para restaurarlo:

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
                               
Título: Dibujar un grid en opengl
Publicado por: samsaga2 en 01 de Enero de 1970, 01:00:00 AM
                                Pues ahora si que no lo entiendo. Si hago las pruevas con una esfera creada con quadrics funciona, pero si intento hacerlo con GL_QUADS o GL_TRIANGLES no tira :. Es mas, parece que dibujar GL_QUADS funciona bien (si no esta activado lo del PolygonMode) pero no consigo dibujar absolutamente nada que tenga GL_TRIANGLES. Y parece que este todo bien, la camara esta bien puesta, las normales esta bien, tengo el cullface desactivado, colores bien puestecitos...
                               
Título: Dibujar un grid en opengl
Publicado por: Ithaqua en 01 de Enero de 1970, 01:00:00 AM
                                Dependiendo de la primitiva que quieras dibujar tienes que indicar los vértices de uno u otro modo. El bucle que tienes te serviría para quads, pero no para triángulos. Éstos tienes que indicarlos de 3 en 3 vértices, o bien 4 y usar strips o fans.

                               
Título: Dibujar un grid en opengl
Publicado por: samsaga2 en 01 de Enero de 1970, 01:00:00 AM
                                Nada, lo he solucionado instalando los drivers de video anteriores. Ahora tira todo a la perfección.                                
Título: Dibujar un grid en opengl
Publicado por: Ithaqua en 01 de Enero de 1970, 01:00:00 AM
                                No me quiero ni imaginar la tarjeta que tienes para que te funcione mal eso :sonriendo:

                               
Título: Dibujar un grid en opengl
Publicado por: samsaga2 en 01 de Enero de 1970, 01:00:00 AM
                                Es que tenia instalados unos drivers beta tope de guarris.