系统在 OpenGLES 呼叫时挂起

System hangs up on OpenGLES calls

本文关键字:挂起 呼叫 OpenGLES 系统      更新时间:2023-10-16

>我想用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 次循环有一个缓慢的抽签和更新调用。

问题在于缺少以下行:

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

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