小编mac*_*one的帖子

如何减少 OpenGL CPU 使用率和/或如何正确使用 OpenGL

我正在开发一个用 OpenGL 构建的Micromouse 模拟应用程序,我有一种预感,我没有正确地做事。特别是,我对让我的(主要是静态的)图形以接近恒定的帧速率 (60 FPS) 刷新的方式表示怀疑。我的方法如下:

1) 启动计时器
2) 绘制我的形状和文本(大约一千个):

glBegin(GL_POLYGON);
for (Cartesian vertex : polygon.getVertices()) {
    std::pair<float, float> coordinates = getOpenGlCoordinates(vertex);
    glVertex2f(coordinates.first, coordinates.second);
}   
glEnd();
Run Code Online (Sandbox Code Playgroud)

glPushMatrix();
glScalef(scaleX, scaleY, 0);
glTranslatef(coordinates.first * 1.0/scaleX, coordinates.second * 1.0/scaleY, 0);
for (int i = 0; i < text.size(); i += 1) {
    glutStrokeCharacter(GLUT_STROKE_MONO_ROMAN, text.at(i));
}
glPopMatrix();
Run Code Online (Sandbox Code Playgroud)

3) 打电话

glFlush();
Run Code Online (Sandbox Code Playgroud)

4) 停止计时器
5) 睡眠 (1/FPS - 持续时间) 秒
6) 呼叫

glutPostRedisplay();
Run Code Online (Sandbox Code Playgroud)

“问题”是上述方法确实占用了我的 CPU - 该过程正在使用 96-100% 之类的东西。我知道,有没有什么内在的错误使用大量的CPU,但我觉得我不应该用那么多所有的时间

关键是 …

c++ opengl cpu graphics

2
推荐指数
1
解决办法
3966
查看次数

标签 统计

c++ ×1

cpu ×1

graphics ×1

opengl ×1