Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





567567

Iniciado por raul999, 21 de Marzo de 2008, 03:50:44 AM

« anterior - próximo »

raul999

567567567567

Pogacha

Y dependiendo del API que uses para graficar puedes usar bitmap fonts.

Creas los fonts con un generador tal como:
http://www.angelcode.com/products/bmfont/
Y luego los cargas y los dibujas en 2d uno al lado de otro,

O directamente como en OpenGL
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13

O D3DX 9
http://www.drunkenhyena.com/cgi-bin/view_cpp_article.pl?chapter=3;article=17

Sino otra forma sencilla es cambiar el titulo de la ventana una vez por segundo (excepto que esto no sirve en ventana completa).

Saludos

[EX3]

Cita de: "Pogacha"Sino otra forma sencilla es cambiar el titulo de la ventana una vez por segundo (excepto que esto no sirve en ventana completa).
Y que esto bajaria notablemente el rendimiento del programa dando un valor impreciso de fps reales.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Pogacha

Eso es nuevo para mi.
Por que bajaria el rendimiento el cambiar el titulo de la ventana?

[EX3]

Se ve que el modificar aspectos o propiedades de elementos del GDI como son las ventanas y controles de Windows mientras ejecutas operaciones graficas con otro contexto como Direct3D interfiere en la ejecucion de uno y otro, a mi a veces me producia pequeñas pausas que a lo mejor a simple vista no las aprecias en la escena que renderizas pero si son notables en el numero de fps, lo que puede despistar.

Yo al menos al principio tambien mostraba los fps en el titulo de la ventana de mis pruebas y notaba un bajon considerable, que no exagerado, de fps. Desde entonces los muestro a traves del propio contexto de DirectX con las funciones de texto.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Pogacha

Gracias!
Entonces olvida poner el FPS en el titulo de la ventana.

zupervaca

Yo tambien hacia las pruebas con el titulo de la ventana ya que es lo mas facil y comodo, pero realmente se nota muchisimo, lo mejor para que no se note tanto es cambiar solo el titulo de la ventana cada segundo y ademas si solo ha variado el contado de fps.
Lo que tampoco te recomiendo es usa los dispositivos de contexto del gdi, ya que por las pruebas que hice hace tiempo es incluso peor que lo del titulo de la ventana.

El codigo para mostrar los fps que suelo usar yo es este (realmente puede ser mas sencillo y mas basico):

// fps.h

// Por David Inclán Blanco
// http://www.davidib.com
// Este codigo esta protegido bajo licencia LGPL

#ifndef _v8_Time_FPS
#define _v8_Time_FPS

#include "../type/object.h"
#include "time.h"

namespace v8
{
namespace Time
{
/// <summary>Clase para calcular los FPS</summary>
class FPS : public v8::Type::Object
{
public:
/// <summary>Inicializar el contador de FPS</summary>
void Start()
{
this->fps = v8::Time::GetCurrent<unsigned int>();
this->maxFPS = this->fpsTemp = this->last = 0;
this->minFPS = 999999;
}

/// <summary>Calcular los FPS actuales</summary>
/// <returns>Numero de FPS actuales</returns>
unsigned int Calculate()
{
unsigned int current = v8::Time::GetCurrent<unsigned int>();
if( current - this->last >= 1000 )
{
this->last = current;
this->fps = this->fpsTemp;
this->fpsTemp = 0;
if( this->fps != 0 )
{
if( this->maxFPS < this->fps )
{
this->maxFPS = this->fps;
}
else
if( this->minFPS > this->fps )
{
this->minFPS = this->fps;
}
}
}
else
{
this->fpsTemp++;
}
return this->fps;
}

/// <summary>Obtener los FPS actuales</summary>
/// <returns>FPS actuales</summary>
unsigned int GetFPS()
{
return this->fps;
}

/// <summary>Obtener los FPS maximos</summary>
/// <returns>FPS maximos</returns>
unsigned int GetMaxFPS()
{
return this->maxFPS;
}

/// <summary>Obtener los FPS minimos</summary>
/// <returns>FPS minimos</returns>
unsigned int GetMinFPS()
{
return this->minFPS;
}

private:
/// <summary>FPS actuales</summary>
unsigned int fps;

/// <summary>FPS maximos</summary>
unsigned int maxFPS;

/// <summary>FPS minimos</summary>
unsigned int minFPS;

/// <summary>FPS temporal para calcular los FPS actuales</summary>
unsigned int fpsTemp;

/// <summary>Ultimos tiempo desde la llamada a CalculateFPS</summary>
unsigned int last;
};
}
}

#endif



// time.h

// Por David Inclán Blanco
// http://www.davidib.com
// Este codigo esta protegido bajo licencia LGPL

#ifndef _v8_Time_Time
#define _v8_Time_Time

#include <time.h>

namespace v8
{
namespace Time
{
/// <summary>Obtener el tiempo actual</summary>
/// <param name="TYPE">Tipo de dato en el que obtener el tiempo actual</param>
/// <remarks>1 segundo son 1000 ticks siempre</remarks>
/// <returns>Valor obtenido mediante la funcion clock()</returns>
template <class TYPE> TYPE GetCurrent()
{
#if CLOCKS_PER_SEC == 1000
return (TYPE)clock();
#else
return (TYPE)(clock() * ((TYPE)1000 / (TYPE)CLOCKS_PER_SEC));
#endif
}
}
}

#endif


Lo mejor es que cojas lo que quieras del codigo y lo uses a tu gusto.

Saludos

fjfnaranjo

Si simplemente quieres ver los frames que da: FRAPS.
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)






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.