Bueno, estoy haciendo pruebas y la verdad es que me sorprende un poco lo que veo. Ahora mismo puedo renderizar el terreno de 3 formas diferentes:
1.Fuerza bruta:todo de golpe
2.A cachitos:todo de golpe por cachos
3. QuadTree
Evidentemente la mejor es la 3, pero es curioso que la 1 no gane a la 2...pero eso ya es agua pasada
Pues lo siguiente que he hecho ha sido comprimir los vértices. Así paso de:
Posicion: float x,y,z = 12 bytes
Textura: float u,v = 8 bytes
A
Posicion: udec3 = 4 bytes
Textura: short2n = 4 bytes
Es decir, que paso de 20 bytes por vértice a 8.
Pues se gana, y yo creía que no tanto. En mis pruebas, ejecutando el programa y sólo pulsando F1 y F2, obtengo estos FPS:
Sin comprimir
91 FPS
Comprimido
140 FPS
En fin, que hay veces que nos matamos por ganar FPS y fíjate por aquí podemos ganar bastante.
Bueno, deciros que necesitais una tarjeta que soporte shaders 2.0 y que en la demo vereis que al pasar del modo normal al comprimido, los vértices se mueven un poco y dan un efecto muy feo. Esto es culpa mía, porque podría hacer que las posiciones fueran números enteros pero no lo he hecho por pereza.
Ese enlaceFeliz demo.
Por cierto, dejad ya ese post que todos sabemos!!
¿Qué es eso de udec3? No lo encuentro en la ayuda.
Si va más rápido con los vertices comprimidos, es que se almacenan en ram normal y al llamar a DrawPrimitive se pasan a ram de video. Por eso tambien va más rápido al enviar la geometria a cachos. No hay otra explicación.
un saludo
Da el siguiente error en el log:
No encuentro tierra
No encuentro hierva
No encuentro nieve
Seguramente es que no encuentra las texturas. Aunque en realidad sí están, en el directorio "graf". He probado a meter las texturas en el directorio raiz, donde está el ejecutable pero sigue dando el error.
Saludos.
perdón por el error :(
Ya está corregido en el mismo link.
Fiero, que los vértices están en ram de vídeo, puesto que los he creado POOL_MANAGED. Además si estuvieran en vídeo, el modo a cachos iría más lento, pq haría:
copiar el cacho de vértices de ram a vídeo
dibujar
esperar a que termine porque tiene que acceder a la memoria de vídeo para poder copiar
copiar el cacho de vértices de ram a vídeo
dibujar
esperar a que termine porque tiene que acceder a la memoria de vídeo para poder copiar
...
Acabo de hacer la prueba con SYSTEMMEM y me da 5 FPS!!! Así que está PROBADO que los vértices están en memoria de vídeo.
No creo que el driver le permita copiar en memoria de vídeo si el hard está trabajando.
Lo he probado y el mas rapido el es 3º metodo... como era logico, y si, no hay diferencia entre el 1º y 2º..de hecho me baja unos pocos frames (pero vamos...3 de 160 como q da igual) lo q no cambia muso es usando la compresion descompresion... debe ser q en mi sistema de video(es una 9700pro) el cuello de botella anda por otro lado no?
¿Porqué iba a ser más rápido enviarlo todo de golpe que enviarlo a cachitos? Creo que esto ya se comentó en otros posts, y la conclusión era que la tarjeta se atreganta con paquetes de un número demasiado elevado de vértices (como imagino que será ese terreno) y que la mejor forma es enviarlo en batches de 200 a 2000? tris?
Resultados:
Enviar de golpe todo sin compresión: 157fps
Enviar en batches sin compresión: 196fps
Octree sin compresión: 313fps
Enviar de golpe todo con compresión: 208fps
Enviar en batches con compresión: 200fps
Octree con compresión: 323fps
Saludos.