Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas de rendimiento

Iniciado por CoLSoN2, 23 de Enero de 2003, 02:46:23 PM

« anterior - próximo »

CoLSoN2

                                Vereis, estoy haciendo un jueguecillo como proyecto de investigación para el cole, y el caso es que en mi casa con un 866mhz y una gf4ti, una malla de 98,000 vertices me va a 80-85 fps (dividido en 64vertexbuffers).
En el cole tienen 2ghz, y tarjetas TNT2(sin T&L), y esa malla iba pos a 10fps o así xD
Así que hice que pudieras elegir el nivel de detalle de la malla, siendo:
- Alta: ~98,000 vertices
- Media: ~24,000
- Baja: ~5,000
- Muy Baja: ~1500
La alta va a unos 10-15fps, y la muy baja, a unos 20fps.. lo cual me hace sospechar que no es la cantidad de vértices lo que hace que vaya tan lento. Además de la geometría en sí, hay un skybox, que son 12 triangulos, y una nave de ~500polys, que renderizada sola va como la seda.
Cada vértice tiene un color, que blendeo con una textura. Todo el terreno utiliza la misma textura (cada quad), para dar un poco de detalle. Es de 256x256, y no uso mipmapping ni nada (más que nada porque no creo que la TNT2 lo soporte).

¿Qué creeis que puedo hacer para optimizar esto? Porqué está claro que así es injugable..

thx                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

_Grey

                                Pues que yo sepa el cambio de vertexbuffers es algo que puede hacer notar una caida de rendimiento es decir que de la misma manera que recomiendan no cambiar mucho de textura tambien recomiendan no cambiar demasiado entre vertexbuffers.

Yo te recomendaria que esa malla tan grande, no este en tantos vertexbuffers, seria mejor que estubiera en un array (o varios) y cuando la tengas que renderizar pases todas esas partes visibles a un mismo vertexbuffer y la dibujes de una pasada, o varias si hay cambios de texturas, pero en el mismo vertexbuffer. Es mas, te recomendaria que lo tubieras todo en arrays y que los pasara al mimo vertexbuffer, pero con hacerlo solo con la gran malla ya se deberia de notar.

Y que yo sepa la TNT2 soporta mipmaping....... tengo que reconocer que no lo se con certeza pero me extrañaria que no fuera asi, por que lo del mipmaping tiene muuuchoooo tiempo.

ya nos cuentaras, saludotes.                                

CoLSoN2

                                hmm... utilizo VB dinamicos o creo y destruyo uno a cada frame?
¿Los VB tienen limite de vertices? (lo digo por lo de los 98,000, ya que un index buffer de 16bits solo soporta 65,000) ¿un único VB de 98,000 vertices, si se pudiese hacer, no sería demasiado?                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

x-alien

                                el problema es natural k te pase, una tnt2 no puede mover tanto y menos sin optimizar... cuantos triangulos tienes en pantalla??

has metido la malla en vertexbuffer como D3D_MANAGED??... no se ...
si has hecho eso te ira mas fluido...
he visto en este foro gente k dice k no es aconsejable usar el vertexbuffer para cargar modelos...

tambien puedes optimizar usando esto


if( FAILED( m_pMesh->OptimizeInplace(D3DXMESHOPT_COMPACT | D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE,

                       (DWORD*)m_pAdjacencyBuffer->GetBufferPointer(), NULL, NULL, NULL ) ) )

 {

  SAFE_RELEASE( m_pAdjacencyBuffer );

        SAFE_RELEASE( m_pMtrlBuffer );

  return E_FAIL;

 }

asi eliminas vertices innecesarios, como bien sabes si cargas modelos x, estos estan como trianglelist, por lo cual... hay mas vertices de la cuenta.

un modelo k en el 3dsmax tiene 500 vertices, en dx el mismo modelo tiene + o - 1000 vertices, por culpa del trianglelist, pero es la mejor manera de hacer frustum culling.

yo no uso vertexbuffer para los modelos, no me gusta, por algo esta LPD3DXBUFFER.
puedes hacer como el doblebuffer, front buffer y back buffer.
creas un buffer para el modelo donde hacer los calculos, y otro para meter el resultado, y mostrarlo en pantalla. para esto te hara falta crear 2
LPD3DXMESH, uno para el back y otro para el front. puede parecer complicado al principio pero es una tonteria, con esto ganaras muchos fps asegurado.  :jaja:  :jaja:.

dinos el numero de polgigonos(triangulos) k tienes en pantalla.
usa ->getnumfaces como variable de retorno para mostrar el numero en pantalla de triangulitos

salu2

pd. joder con cataluña!! en la escuela ordenadores de 2 gigas manda webos.. y aki en mi uni el ordenador mas potente es de 266mghz.
joder los andaluces pagamos impuestos para tener contentos a los vascos y los catalanes para k no pidan independencia...                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

ethernet

No se como ira en DX pero yo en opengl lo haria con una display list q segun nvidia es lo mas optimo sin usar extensiones de esas mierdas q tienen ellos XDD. Supongo q DX tendar un simil a display list.

No estan mal los pc's de tu cole pero en realidad se necesita un pc mas rapido para lo q haceis ?.
x-alien: en andalucia los jornaleros han tenido ya la gallina de los huevos de oro con las subvenciones  q el resto de españoles NO teniamos, eso tb cuenta. En cyl no tenemos pc's de 2 ghz por cierto.

synchrnzr

                                2 GHz? Joer, yo también soy de Cataluña y ni siquiera he visto un ordenador de 2 GHz... salvo en los cupones de las tiendas X'DDD

Yo también pienso que es cosa de la TNT2 (más que nada porque tengo una y conozco demasiado bien sus limitaciones ^_^')

sync                                

Mars Attacks

                                En Castellón no tenemos pc's de 266Mghz... por aquí hay aún rulando 486, pero la mayoría son 133  :( (en las salas de libre acceso, en las de prácticas puede que haya algún pII incluso. Los laboratorios son otra historia).                                

x-alien

                                ethernet por lo k veo no ves los telediarios... el bigote aznar debe al pueblo andaluz tal millonada de euros k no podria decir pork da miedo...
ahora mismo el chavesss esta intentando se nos de lo k es nuestro... es decir nuestros impuestos, k pagamos a hacienda... y como dijo chavez en el parlamento andaluz... nuestros impuestos no es para k se lo keden los catalanes y vascos =).
de lo k pagaron los andaluces, solo hemos recibido un 15%, donde esta el resto... como bien sabes el dinero de todas las comunidades va a parar al gobierno central, y este reparte...
las subvenciones son para extremadura y andalucia ya k son las comunidades de mayor agricultura, y ese dinero viene de la comunidad europea... ademas han kitado el per... asi un agricultor se muere de hambre.  :X9:

offtopic total  :jaja:  :jaja:  :jaja:  :jaja:

salu2 :ojo:                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

Zaelsius

Pues sólo recalcar lo que se ha dicho: tienes que mandar los triángulos a la tarjeta de la manera más eficiente posible, intentando hacer muy pocas llamadas a DrawVertex...(no me acuerdo como se llama la función), y enviando la mayor cantidad de triangulos posibles. Esto suele ser lo más óptimo cuando sabes que la tarjeta aguanta un nº de triángulos por segundo determinado.

Offtopic: Pues en la Universidad de ALicante, el equipo medio en el que suelo realizar las prácticas podría ser un IBM P3-450 con 64MB, aunque suelo utilizar bastante IBM P4-1400/256 MB/TNT Vanta(laboratorios de prácticas libres), y Siemens P4-1500/256 MB/Radeon 7500(salas de informática de libre acceso)(en estos me suelo pegar algun vicio al Wolfenstein o Quake3 de vez en cuando, que complementados con la conexión a RedIris se hacen bastante amenos en el modo multijugador).

Jur jur, venios todos p'Alicante!!!

¿Por cierto, alguien va a venir a la Xplanada Party(se hace en la UA)?

_Grey

                                Utiliza vertexbuffer dinamicos (D3DUSAGE_DYNAMIC), NI SE TE OCURRA CREAR Y DESTRUIR UNO EN CADA FRAME,los creas al inicio de la fase del juego o asi, PERO NUNCA CREES Y DESTRUYAS VERTEXBUFFER CADA FRAME!!!

Un indexbuffer puede ser de 32bits, pero no es muy recomendable usarlo por que muchas targetas no lo soportan...lo mejor es que llenes el vertbuffer (y el indexbuffer si lo usas tambien) con todo lo que puedas y lo dibujes, luego lo rellenas otra vez y asi..... es decir, tienes la malla dibidida en 64 arrays(no vertexbuffer) como comentas al principio del post, pues rellenas ese vertexbuffer con el que rendizaras incluyendo las partes que caben, lo dibujas, y lo rellenas con el resto de partes asta que lo dibujas todo.

Recuerda que cambiar de vertexbuffers hace caer el rendimiento, es algo a evitar en la medida de lo posible, como los cambios de texturas y demas.

[A TODOS]
Ya se que la TNT2 no es una GForce4TI, pero chicos si incluso con la malla "Muy Baja" corre asi....


[x-alien]
Andalucia es un pozo sin fondo......... y detesto ese smile!! :x                                

Zaelsius

Citar
Yo también pienso que es cosa de la TNT2 (más que nada porque tengo una y conozco demasiado bien sus limitaciones ^_^')

Joer, yo creo que una TNT2 tira de sobra para lo que quiere hacer Colson: P3-550, 128MB RAm y TNT2 sacan unos 65 FPS con el quake3 a 800x600, 32 bit. (aproximadamente)

Tambien puede ser que se junte todo:mala optimización, y puede que un modelo de TNT2 del carrefour(una m64 de 16mb, que las hay!!, y son las que solian pinchar en algunos equipos "de marca")

Mars Attacks

                                Mi idea es migrar a Alicante cuando acabe el primer ciclo (el curso que viene si todo me va bien XDDDDDD así que será al otro). ¿Qué es la Xplanada Party?

Y perdón por el offtopic... yo no tengo ni idea de rendimientos pero me curiosean muchas cosas que dicen por aquí...                                

synchrnzr

                                Creo que el Quake III no mueve tantos polígonos... de todas formas la TNT2 que tengo es gay (no sé si de 16 o de 32Mb) y tengo comprobado que cuando te mueves por ese número de polígonos optimizando al máximo (bueno... con display lists de triangle strips creo que conseguía el mejor rendimiento) va petada. Bueno, supongo que ya se supone, me refería en todo momento a más de 65K polígonos.

Mejor que no me meta en esas cosas, que lo mio es el sonido y de lo demás no domino :ojo:

sync                                

ethernet

Colson; q es eso q tiene tantos poligonos?

x-alien: como veo lees El pais xDDDDDDDDDD. Unas preguntas: por q cuando cyl es una comunidad q tiene tanta cantidad de agricultores como andalucia no ha percibido las ayudas q hasta ahora recibian los andaluces y extremeños? cuanto dinero nos deben a cyl (y a otras comunidades)por impago de esas subvenciones ( no las de la comunidad europea) ?: no se si te habras percatado pero la ley de empleo tan famosa va con el fin de eliminar esas extra-mega-ayudas( despues se han pasado un bastante pero eso es aparte, de ahi la modificacion). Nosotros tb queremos estar trabajando 2 meses y cobrando 8. quien no? y tu? En cyl queremos el per para los agricultores q son iguales q los andaluces y extremeños. Me parece q esa politica es la misma q no te gusta con respecto al reparto a los vascos y catalanes.

ShAq

                                OffTopic: bueno ya que mi amigo ZaelsiuS debido a que no tiene tarifa
plana no te ha contestado, te contesto yo mars, la xplanada party, es
una especie de campus party pero a menor escala, que se hace aqui
en la universidad de Alicante, se suele hacer para semana santa, la
uni cede una sala con monitores y la gente se lleva su pc:P,la diferencia
con la campus es que esta es gratis, :enfadado: jaja
sorry por el offtopic, hasta pronto!