我打算用freeglut函数glutBitmapString在屏幕上显示FPS,但它什么也没有显示。这是我的代码。有没有人可以找出问题所在?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在屏幕
没有真正涉及到企业的实际问题,但'字符*总分=新的char [30]; '不会被删除,所以你会漏掉每一帧。在堆栈上分配数组可能会更好。 – Grimmy
谢谢。当我在调试过程中跟踪out的值时,这个值是完全正确的。它不能被打印在屏幕上。我也尝试使用glutBitmapCharacter,但它仍然没有工作 – Aaron
没有足够的代码来真正说明。发布[SSCCE](http://sscce.org/)。 – genpfault