系统挂起OpenGLES调用

时间:2012-06-30 06:32:30

标签: c++ opengl-es

我想使用OpenGLES(Win32 / C ++ / VS2010)绘制简单的三角形。 所以我没有任何错误,但系统挂起了OpenGLES调用。

我可以在我的机器上编译和运行不同的游戏引擎,一切顺利,但我不能画一个简单的三角形!

游戏循环仍在运行,所以我收到更新和绘制事件,我看到了我的三角形,但OpenGLES调用速度很慢,系统挂断了!

1.  Creating and initializing EGL stuff.

2.  glViewport(0, 0, 800, 480);

3.  glClearColor(/*black*/);

4.  glClear(GL_COLOR_BUFFER_BIT);

5.  GLfloat vertices[] = {1,0,0, 0,1,0, -1,0,0};

6.  glEnableClientState(GL_VERTEX_ARRAY);

7.  glVertexPointer(3, GL_FLOAT, 0, vertices);

8.  glDrawArrays(GL_TRIANGLES, 0, 3);

9.  glDisableClientState(GL_VERTEX_ARRAY);

10. glFlush();

11. eglSwapBuffers(...)

游戏日志显示一些非常奇怪的东西!

NO TAG:     Updated:    0ms.
NO TAG:     Rendered:   0ms.
NO TAG:     Updated:    1ms.
NO TAG:     Rendered:   1ms.
NO TAG:     Updated:    0ms.
NO TAG:     Rendered:   0ms.
NO TAG:     Updated:    1ms.
NO TAG:     Rendered:   1ms.
NO TAG:     Updated:    0ms.
NO TAG:     Rendered:   1ms.
NO TAG:     Updated:    1ms.
NO TAG:     Rendered:   0ms.
NO TAG:     Updated:    567ms.
NO TAG:     Rendered:   478ms.

对于第50次循环,每次都有一个慢速绘制和更新调用。

1 个答案:

答案 0 :(得分:0)

问题在于缺少这些内容:

if (! m_hAccelTable || ! TranslateAccelerator(msg.hwnd, m_hAccelTable, &msg))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

现在,我的应用程序不会挂起,但它什么也不呈现。