Я собираюсь показать FPS на экране функцией glutBitmapString с функцией freeglut, но он ничего не показывает. Вот мой код. Кто-нибудь может понять, где проблема?glutBitmapString ничего не показывает
void PrintFPS()
{
frame++;
time=glutGet(GLUT_ELAPSED_TIME);
if (time - timebase > 100) {
cout << "FPS:\t"<<frame*1000.0/(time-timebase)<<endl;
char* out = new char[30];
sprintf(out,"FPS:%4.2f",frame*1000.0f/(time-timebase));
glColor3f(1.0f,1.0f,1.0f);
glRasterPos2f(20,20);
glutBitmapString(GLUT_BITMAP_TIMES_ROMAN_24,(unsigned char*)out);
timebase = time;
frame = 0;
}
}
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 0.5f };
GLfloat vYellow[] = {1.0f,1.0f,0.0f,1.0f};
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vYellow);
//triangleBatch.Draw();
squareBatch.Draw();
PrintFPS();
glutSwapBuffers();
}
предполагалось показать FPS в левом верхнем углу экрана
не очень связано с актуальной проблемой, но 'символ * из = новый символ [30]; 'никогда не удаляется, поэтому вы пропускаете каждый кадр. Может быть, лучше просто выделить этот массив в стеке. – Grimmy
Спасибо. Когда я отслеживаю значение out во время отладки, значение было полностью правильным. Его просто нельзя напечатать на экране. Я также пытался использовать glutBitmapCharacter, но он все еще не работал – Aaron
Недостаточно кода, чтобы действительно рассказать. Отправьте сообщение [SSCCE] (http://sscce.org/). – genpfault