系统在 OpenGLES 呼叫时挂起
System hangs up on OpenGLES calls
>我想用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);
}
现在,我的应用程序没有挂起,但它什么也不呈现。
相关文章:
- 挂起和取消挂起一个文件DLL
- 如何防止C++遗留代码中的挂起指针
- 为什么所有C++编译器都会崩溃或挂起此代码
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 构建挂起,即使是适度的文件大小
- 循环挂起迭代的 std::擦除 on std::list
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 从不同进程中的另一个线程挂起/恢复线程或进程
- Boost (Beast) websocket:同步写入挂起
- 为什么析构函数挂起
- 使用互斥会挂起程序
- 在C++和 Python 程序中使用命名管道的 IPC 挂起
- 设置变量时C++程序挂起
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 有时ShowWindow从不调用OnShowWindow,主应用程序挂起
- 如何防止GUI挂起,同时允许第二次操作与Qt中的第一次操作一起执行
- 如何在Cocos2d Android应用程序中获得呼叫/挂起事件
- 系统在 OpenGLES 呼叫时挂起