OpenGL系统设计——求帧速度
来源:互联网 发布:淘宝司法拍卖网房产 编辑:程序博客网 时间:2024/05/16 10:25
转载地址 http://blog.csdn.net/lotusone/article/details/4916864
帧速率也是一个熟悉的话题,帧速率通常指动画运行时每秒的帧数。对于相同的应用来说,帧速率通常是衡量计算机性能高低的一个指标,特别是显卡。而很多OpenGL的应用由于涉及到3D处理,纹理贴图等,更可以检验显卡性能的高低。正因为如此,从Quake、Quake2到Quake3一直都是发烧友测试机器和显卡性能的工具之一。
事实上,只要在程序中加入一个简单的几行代码就可以实现帧速率的测试功能了。
TCHAR szFPS[MAX_LOADSTRING]; //表示帧速率字符串
void CalculateFrameRate()
{
static float framesPerSecond = 0.0f; //帧计数器
static float lastTime = 0.0f;
//将毫秒转换成秒
float currentTime = GetTickCount() * 0.001f;
// 累加帧计数器
++framesPerSecond;
// 如果当前时间和上次记录的时间差大于1秒
if( currentTime - lastTime > 1.0f )
{
//将上一次的记录时间设成当前时间
lastTime = currentTime;
//记入szFPS全局变量
sprintf(szFPS, "Current Frames Per Second: %d", int(framesPerSecond));
// 对帧计数器进行复位
framesPerSecond = 0;
}
}
int glMain(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-0.5, -0.5, -3.5);
//使用这种方法取代前面的通过WM_KEYDOWN消息带的wParam来判断键盘消息
if(keys[VK_ESCAPE]) //ESC键退出
return FALSE;
if (keys[VK_F1]) //F1键切换窗口模式
{
keys[VK_F1]=FALSE;
glShutdown();
fullscreen=!fullscreen;
if (!InitInstance(WIDTH, HEIGHT, BITS))
{
return 0;
}
}
//绘制1000个三角形
for(int i=0; i<1000; i++)
{
glBegin(GL_TRIANGLES);
glColor3ub(rand()%256, rand()%256, rand()%256);
glVertex3s(rand()%3, rand()%3, 0);
glColor3ub(rand()%256, rand()%256, rand()%256);
glVertex3s(rand()%3, rand()%3, 0);
glColor3ub(rand()%256, rand()%256, rand()%256);
glVertex3s(rand()%3, rand()%3, 0);
glEnd();
}
CalculateFrameRate();
glColor3f(1.0, 0.0, 0.0);
glRasterPos2f(-1.0f, 0.35f);
glPrint(g_Base, szFPS);
SwapBuffers(g_hDC);
return TRUE;
}
程序运行效果如图11-2所示,在320X240X16位色的窗口模式下,在PIII 866的机器上帧速率基本稳定在22左右,在全屏模式下稳定在23。通过这个程序也可以看到,当处于全屏模式时,程序运行的的确要快一些,当然在我们这个简单的程序中并不那么明显。
- 顶
- 0
- OpenGL系统设计——求帧速度
- OpenGL系统设计-帧速率
- OpenGL系统设计-OpenGL扩展
- OpenGL系统设计-前言
- OpenGL系统设计
- OpenGL系统设计
- OpenGL系统设计-1.1什么是OpenGL
- OpenGL系统设计-1.2 OpenGL架构
- OpenGL系统设计-OpenGL基本图元
- OpenGL——光照系统
- OpenGL——粒子系统
- OpenGL系统设计-3 颜色
- OpenGL系统设计-反走样
- OpenGL系统设计-DirectInput(1)
- OpenGL系统设计-DirectInput(2)
- OpenGL系统设计-DirectInput(3)
- OpenGL系统设计-融合DirectXAudio
- OpenGL系统设计-粒子系统(1)
- HPU:1232畅通工程(并查集)
- <LeetCode OJ> 257. Binary Tree Paths
- [leetcode oj 191]Number of 1 Bits
- 等待队列 赏析
- 从 MongoDB 及 Mysql 谈B/B+树
- OpenGL系统设计——求帧速度
- C#中HttpWebRequest用Post提交Content-Type: multipart/form-data;
- 有关vs2010 QT5的环境配置
- 创建带子菜单的选项菜单
- 【每周一文】Natural Language Processing (almost) From Scratch
- 【UVa】[227]Puzzle
- HPU:1863畅通工程(kruskal)
- Python实现复合辛普森求积公式
- Reader开发(一)电子书分页,翻页效果,字体大小调整和基本功能实现