Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - misscelan

#211
Programación gráfica / Optimizar Bsp
07 de Julio de 2005, 10:12:54 AM
 Perdón pero es que no lo he puesto bien.

En la segunda manera utilizo glDrawArrays. Pero vamos lo que me extraña es que en la segunda manera usando pvs y frustumculling me vaya más lento que imprimirlo todo a lo bruto cuando debería ser al revés. O puede que eso sirviese sólo para tarjetas muy viejas y ahora eso sea hasta contraproducente?. Mi tarjeta no es nueva es una radeon 9200.

Muchas gracias.

Un saludo.
#212
Programación gráfica / Optimizar Bsp
06 de Julio de 2005, 08:21:51 PM
 Después de mil quebraderos de cabeza por fin tengo cargado el bsp.

En un principio utilizé la manera más fácil de renderizar el bsp, sin meterme en pvs, ni frustum culling, ni nada por el estilo. Usé esto:

void render_face(int faceIndex)
{
   
    tBSPFace *pFace = &sMBSP.BSPFace[faceIndex];

    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, todas_texturas[pFace->textureID]);

    glActiveTextureARB(GL_TEXTURE1_ARB);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, todos_lightmaps[pFace->lightmapID]);

    glBegin( GL_TRIANGLES);
      for( int j=0; j < pFace->numMeshVerts; j++)
      {

         int offset = sMBSP.BSPMeshVerts[pFace->meshVertIndex+j].pMeshVerts + pFace->vertexIndex;
   
            glMultiTexCoord2fARB(GL_TEXTURE0_ARB, sMBSP.BSPVertex[offset].vTextureCoord.u,
                                                 sMBSP.BSPVertex[offset].vTextureCoord.v);
            glMultiTexCoord2fARB(GL_TEXTURE1_ARB, sMBSP.BSPVertex[offset].vLightmapCoord.u,
                                                 sMBSP.BSPVertex[offset].vLightmapCoord.v);
            
            glVertex3f(sMBSP.BSPVertex[offset].vPosition.x,
                      sMBSP.BSPVertex[offset].vPosition.y,
                     sMBSP.BSPVertex[offset].vPosition.z);


      }
      glEnd();


}


Con esto tenía unos fps que se movían entre 70-90.

Decidí meterme en temas mayores añadiendo pvs y frustum culling.

Y se quedo en esto.

void render_escena(tvector *vPos)
{

   int i = matConstTam[kFaces];

   callcular_planos_frustum();

   for (int i = 0; i < matConstTam[kFaces]; i++)
   caras_pintadas = false;

   int hoja_actual = encontrar_hoja(vPos);

   int cluster_actual = sMBSP.BSPLeaf[hoja_actual].cluster;

   for(i = 0; i < matConstTam[kLeafs]; i++)
   {
     if (cluster_visible(cluster_actual, sMBSP.BSPLeaf.cluster))
     {
        if(bb_frustum(sMBSP.BSPLeaf.mins,sMBSP.BSPLeaf.maxs))
         render_leaf(&sMBSP.BSPLeaf);
     }
   }

}

void render_leaf(tBSPLeaf *a)
{
   for(int i = 0; i < a->numOfLeafFaces; i++)
   {
      render_face_pvs(sMBSP.BSPLeafFaces[a->leafface + i].pLeafFaces);

   }

}



bool cluster_visible(int visCluster, int testCluster)
{

   if ((sMBSP.BSPVisData.pBitsets== NULL) || (visCluster < 0)) {
       return true;
   }

   int i = (visCluster * sMBSP.BSPVisData.bytesPerCluster) + (testCluster >> 3);
   byte visSet = sMBSP.BSPVisData.pBitsets;

   return (visSet & (1 << (testCluster & 7))) != 0;
}

El resultado de esto son unos frames por seg que se mueven entre 40-80. Si me mantengo en la zona donde empiezo los frames estan entre 120-130 pero en cuando empiezo a pasear por el mapa bajan a lo dicho anteriormente. El problema no parece estar en la función de pintar caras(no la he puesto en este post) porque si la comento no sale en pantalla nada (obviamente) pero la tasa de frames aunque sube unos 30 más o menos sigue bajando en picado cuando me muevo. Si comento la función de la caja del frustum apenas se nota.

Dónde puede estar el cuello de botella?

Muchas gracias.

Un saludo
#213
Programación gráfica / Problemas De Texturizado
18 de Junio de 2005, 10:26:08 AM
 Muchas gracias BeRSeRKeR!!!!.

Problema solucionado. Soy un novatillo y eso no lo habría sacado solo nunca.

uff menos mal.

Un saludete.

#214
Programación gráfica / Problemas De Texturizado
17 de Junio de 2005, 08:44:40 PM
 Estoy con un cargador de mapas bps.

Estoy usando este código sucio y barato porque antes de meterme con nodos, hojas t demás me gustaría saber que lo que llevo hecho hasta ahora está bien.

Este es el código.


tBSPFace *pFace = &sMBSP.BSPFace[faceIndex];

glBindTexture(GL_TEXTURE_2D, todas_texturas[pFace->textureID]);

glBegin( GL_TRIANGLES );
for( int j=0; j < pFace->numMeshVerts; j++)
{
int offset = sMBSP.BSPMeshVerts[pFace->meshVertIndex+j].pMeshVerts + pFace->vertexIndex;

glTexCoord2f(sMBSP.BSPVertex[offset].vTextureCoord.u,
sMBSP.BSPVertex[offset].vTextureCoord.v);
glVertex3f( sMBSP.BSPVertex[offset].vPosition.x,
sMBSP.BSPVertex[offset].vPosition.y,
sMBSP.BSPVertex[offset].vPosition.z);

}
glEnd();


Esto está dentro de un bucle que recorre las caras.

Los vertices se ven bien, el problema son las texturas se me ven deformadas, estiradas, sucias y no ocupan toda la superficie.  (nooo)  (nooo)  (nooo)  (nooo)

La carga  está bien porque he comparado las coordenadas de las texturas con otro bsp que funciona y coincidian una a una. Lo raro es que si la variable offset sitúa bien los vértices porqué no hace lo mismo con las coordenadas de la textura. ¿?

Aquí unas fotos del problema.

http://misscelan.iespana.es/

Las dos primeras son del mapa bsp.
La tercera es una de las texturas del mapa puesta en un simpre triángulo (ahí si salen bien las cabronas).

Muchas gracias y un saludo.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.