我打算用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