Estou com uma dúvida. Estou criando uma aplicação que, com precisão, precisa fazer um retângulo (ou outra imagem qualquer) cintilar em uma dada frequência (por exemplo, 12 Hz, 20 Hz, etc). Eu consegui fazer isso usando o Unity3d, mas agora estou querendo implementar em OpenGL.
Pretendo usar C++, OpenGL e SDL. Mas me veio uma dúvida. Se eu usar o Visual C++, a aplicação vai rodar em uma virtual machine, correto? Se sim, isso vai me fazer perder precisão (lembrando que preciso cravar a frequência). Neste caso, deveria usar outro compilador, como o g++?
Eu li em algum lugar que usar SDL_Delay para controlar a frequencia da atualização da tela não é uma boa pratica, então acredito que o mesmo se aplica à frequencia com o que seu quadrado pisca.
Veja se encontra outras tecnicas para alcançar seu resultado. Para ajudar em sua busca, segue os links que me ajudaram bastante e que podem lhe dar uma luz:
Outra coisa é não usar a surface para desenhar e sim o renderer, parece que a performance é melhor pois ele é acelerado por hardware, mas pesquise melhor sobre isso.
Na verdade, eu não queria travar o FPS, eu queria travar a quantidade de vezes que o quadrado pisca na tela.
Eu estou desenvolvendo um aplicativo para controlar cadeira de rodas por pensamento. Se eu conseguir fazer um quadrado piscar na tela, por exemplo, 12 Hz por segundo, precisamente, então eu consigo selecionar o sinal cerebral e acionar um comando. No entanto, eu estou com dificuldade de conseguir esta precisão usando OpenGL. Eu consegui este resultado com outras ferramentas, mas como quero simplificar ao máximo a aplicação, até para poder embarcar a aplicação na cadeira de rodas, estou tentando solucionar usando opengl.
Eu até tentei pegar o tempo que o programa leva para o processamento e desenho a cada iteração e subtrair no delay, mas não consegui um resultado satisfatório. De qualquer forma, vou trocar a forma de renderizar, de acordo com a sua sugestão, com aceleração de hardware, e ver o que consigo.
Caso tenha mais alguma sugestão, peço que compartilhe.
Acontece que quando eu rodo, as vezes aparecem umas faixas brancas horizontais na tela, como uma televisão antiga, mas somente na região do quadrado, alguém sabe o que pode estar acontecendo?