Jump to content

Recommended Posts

Posted

pessoal, alguem conhece alguma função para mover para uma variavel os fps que o pc que esteja a usar o programa tenha?

porque se eu não souber nuns pcs um objeto é mais rapido e noutros mais lento!

fazia assim:

movimento do objeto=100/fps

Posted

pessoal, alguem conhece alguma função para mover para uma variavel os fps que o pc que esteja a usar o programa tenha?

porque se eu não souber nuns pcs um objeto é mais rapido e noutros mais lento!

fazia assim:

movimento do objeto=100/fps

Fiquei intrigado com a tua pergunta, eu não sei como fazer mas decidi ir pesquisar e encontrei um site a explicar como calcular os fps de um demo, com o uso da função GetTickCount() , http://pjmoo.codigolivre.org.br/gdj/pag_artigo_leitura.php?id=13 .

Vê se te ajuda ;D

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Posted

epa ... a tua pergunta estava com um português muito difícil de perceber ... mas parece que pretendes saber como efectuar o calculo do fps ???

simples :

#include <time.h>

void calcFPS(time_t * frame_time, int * frame_count) {
  time_t current_time = time(NULL);
  if (current_time != *frame_time) {
    // <------------- FPS = frame_count -------------->

    *frame_time = current_time;
    *frame_count = 0;
  }
  (*frame_count)++;
}

int main() {
  time_t frame_time = time(NULL);
  int frame_count = 0;

  while() {
    doFrame();
    calcFPS(&frame_time, &frame_count);
  }
}
IRC : sim, é algo que ainda existe >> #p@p
Posted

Para jogos simples podes fazer isso ao contrário; defines as FPS que pretendes que o jogo tenha (o minimo necessário para que o jogo flua convenientemente) e crias um temporizador para disparar esse número de vezes por segundo.

No ciclo principal controlas toda a lógica do jogo, passo a passo, (sem alterar a janela do jogo) e depois ficas à espera do disparo do temporizador.

Quando o temporizador disparar, colocas todos os objectos do jogo na janela. Uma coisa tipo (pseudo-código) :

define_temporizador(30ms);
white (true)
{
  testa_colisões;
  actualiza_posições;
  escolhe_estado_das_sprites;
  faz_som_asincrono;
  espera_disparo_do_temporizador;
  coloca_objectos_do_jogo_na_janela;
}

Assim evitas flutuações na velocidade do jogo.

Posted
static volatile int desenhado = 0;

void desenha(void)
{
  /* Desenha o jogo */
  desenhado = 1;
}

void instala_timer(void)
{
  install_timer();
  install_int(desenha,30);
}

int main()
{
  instala_timer();
  while (jogo_a_decorrer)
  {
    /* Calcula posições, escolhe sprintes, toca sons, lê teclado */
    while (desenhado == 0);   /* A thread principal fica aqui até que a thread do timer execute a função 'desenha' */
    desenhado == 0;
  }
}

Este pseudo-código mostra o conceito; em vez da variável 'desenhado' deverias usar um semáforo mas por agora podes tentar assim. Mas a variável tem de ser declarada como volatile porque vais alterá-la em duas threads.

Estuda isto: http://alleg.sourceforge.net/stabledocs/en/alleg005.html

  • 3 weeks later...
Posted

o que tens de fazer é :

- saber à partida quanto tempo deverá levar entre a apresentação de uma frame para o outro:

    se queres 60 frames por segundo, tens 1000/60 ~= 33.3 milisegundos

- fazer a aplicação "parar" durante um tempo necessário para que este tempo calculado seja respeitado:

    ao começar a apresentação de um frame verificar o tempo inicial

    calcular a lógica do jogo

    apresentar o frame

    verificar o tempo que passou

    fazer a aplicação "parar" o tempo que falta : 33.3 - (tempo_actual - tempo_inicial)

IRC : sim, é algo que ainda existe >> #p@p
Posted

seuqram sabes pelo o menos o que sao os "fps"?

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

seuqram sabes pelo o menos o que sao os "fps"?

então n havia de saber -.-

farm per second...

quadros por segundo...

mas faz-se isso para o que eu quero?, é que no meu jogo que estou a fazer, utilizei essa função e acho que resultou!

Posted

então n havia de saber -.-

farm per second...

quadros por segundo...

mas faz-se isso para o que eu quero?, é que no meu jogo que estou a fazer, utilizei essa função e acho que resultou!

Nao significa "quintas por segundo"... B)

FPS significa frames per second(fotogramas por segundo).

Que quer dizer que num segundo sao "mostradas" X imagem diferentes, o que podes fazer e' ver quantas iteracoes do jogo houve num segundo. Ou fazer um GetTickCount(em windows) e fazer end-begin e saber quanto demorou aquele frame e fazer o calculo para quantos frames poderiam ser feito em um segundo.

Ja' agora eu perguntei se sabias o que sao os FPS, porque eu a ler este topico, pareceu.me que nao sabes o que e'.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

Nao significa "quintas por segundo"... B)

FPS significa frames per second(fotogramas por segundo).

Que quer dizer que num segundo sao "mostradas" X imagem diferentes, o que podes fazer e' ver quantas iteracoes do jogo houve num segundo. Ou fazer um GetTickCount(em windows) e fazer end-begin e saber quanto demorou aquele frame e fazer o calculo para quantos frames poderiam ser feito em um segundo.

Ja' agora eu perguntei se sabias o que sao os FPS, porque eu a ler este topico, pareceu.me que nao sabes o que e'.

FPS é um tipo de jogo!

3d de tiros...

B)

E tambem é frames per second...

Posted

Eu acho que estas errado.

Tenho a certeza que F.P.S. significa "Federacao Portuguesa de Surf" e tambem pode ser "Fator de Proteção Solar"

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

Eu acho que estas errado.

Tenho a certeza que F.P.S. significa "Federacao Portuguesa de Surf" e tambem pode ser "Fator de Proteção Solar"

as duas outras opções que a wikipedia apresenta ...

podias dizer tipo:

- Filhoses Para Senhoras

- Flight Pacific Sender

- Fedelhos Perdidos de Santarem

...

IRC : sim, é algo que ainda existe >> #p@p
Posted

resumindo e concluindo  B)

posso meter só rest?

:wallbash:

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.