Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Enorme disminucion de FPS

Iniciado por bnl, 20 de Octubre de 2002, 06:32:32 PM

« anterior - próximo »

bnl

                                Hola
    Estoy usando DirectX 8 para dibujar un mapa a base de tiles. De momento estoy llenando toda la pantalla con una sola casilla. Como todas las casillas las tengo en una textura al crear los vertices tengo q indicar en que coordenadas de la textura esta la casilla a pintar.
   Ocurre una cosa muy extraña. Segun ponga unas coordenadas de la textura u otra a los  vertices consigo 85 frames por segundo o 43. ¿alguien sabe a q se debe? Os pongo debajo las coordenadas q pongo. Con las q estan comentadas consigo 85fps y con las otras 43. Es muy raro ¿no?  :(

   textX1 = 0.375
   textY1 = 0
   textX2 = 0.5
   textY2 = 0.0625

   'textX1 = 0.125
   'textY1 = 0.03125
   'textX2 = 0.25
   'textY2 = 0.0625                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

mallrat

                                85/43? me huele a v. sync                                

bnl

                                ¿que es lo del v. sync?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                85 podría ser, pero el 43 no me suena a vsync. Seguro que lo tiene activado, pero el 43 a saber.

El vsync es el vertical sync o sincronización vertical, que consiste en que la tarjeta gráfica rasterize un frame en cada pasada del monitor. De esta forma, si tienes el refresco vertical del monitor a 85 Hz, la tarjeta mostrará 85 frames por segundo.

Saludos.                                
Drowning deep in my sea of loathing

bnl

                                ¿conviene tener activado el vsync?
Lo raro es q la disminucion de los fps se produzca al cambiar las coordenadas de la textura que le paso a los vertices a la hora de crearlos. Con unos valores tiene unos fps y con otros otros direntes y ademas es casi la mitad.
Normalmente siempre tengo unos fps de 85.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                Si normalmente tienes unos 85 fps, esta claro que tienes activado el vsync.

Hay gente que le gusta jugar con vsync porque dicen que se ve más fluido el juego. Lo ideal sería dar la opción al usuario de elegir lo que más le guste. Aunque creo que la mayoría de juegos desactivan el vsync  :?:

Saludos.                                
Drowning deep in my sea of loathing

Haddd

                                Las coord. de textura no tienen nada que ver. Creo que deberías replantearte el problema. Quizás el problema venga a la hora de calcular en tu programa qué coordenadas le toca a cada uno.

Otra cosa..¿estás utilizando DX8 con DDraw o directamente con D3D? ¿Y estás utilizando hard o soft rasterizer?                                

bnl

                                Antes de nada muchas gracias a todos por echarme una mano  :)
  ¿como se activa o desactiva el vsync?
  Estoy usando D3D.
  Las coordenadas las calculo dividiendo 1 entre el numero de tiles que tiene la textura y multiplicando todo por la posicion q ocupa la tile q quiero dibujar en textura.
  En las lineas de codigo q puse antes si simplemente pongo comentarios en las lineas q no lo tenian y los quito de las que lo tenian ya, consigo los 85 fps. Por eso pienso q es ahi donde esta el problema, pero como estoy empezando todavia no las DirectX y no tengo mucha idea quiza haya hecho algo mal en algun otro punto.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                Cuando inicializas Direct3D, la estructura D3DPRESENT_PARAMETERS tiene un miembro llamado PresentationInterval de tipo UINT. Si lo estableces a D3DPRESENT_INTERVAL_ONE tendrás activado el vsync.

Saludos.                                
Drowning deep in my sea of loathing

bnl

                                He probado a cambiar su valor a D3DPRESENT_INTERVAL_ONE y se me mantienen los fps (a 85 y 43 dependiendo de las coordenadas q de a la textura)
He probado a ponerlo a D3DPRESENT_INTERVAL_IMMEDIATE y han aumentado los fps a 95 y 82 (segun las coordenadas q pase a la textura)                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                Lógico. Con INMEDIATE se muestran tantos FPS como tu aplicación pueda calcular y crear, de manera que INMEDIATE siempre dará más FPS que ONE. COn ONE, como ya dije, se sincroniza la muestra de frames con el refresco del monitor. Apostaría a que el refresco actual de tu monitor es 85 Hz :P

Saludos.                                
Drowning deep in my sea of loathing

bnl

                                ¿Immediate puede causar problemas al visualizarse? Lei hace tiempo q si no esperabas al refresco vertical se podian producier parpadeos al mostrarl las imagenes.

¿donde puedo mirar le frecuencia de refresco? He buscado en propiedades de pantalla y no lo he encontrado. ¿Que frecuencia es mejor poner?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

ethernet

No se mucho de DX pero creo q os habeis desviado del tema, no creo q el vsync tenga nada q ver, eso solo fue un comentario q se hizo acerca de q la tasa de 85 fps posiblemente fuera debido al vsync pero nada mas.

Yo pienso q mas bien es lo q ha dicho Haddd ;)

saludos

bnl

                                El calculo de las coordenadas de la textura creo q esta bien porque me dibuja justo la tile  que quiero de todas las que tiene la  textura. ¿donde podria estar el fallo?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

bnl

                                ¿no se os ocurre porque puede ser?
Puedo postear el codigo a ver si alguno veis donde esta el fallo.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






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.