0

我想使用 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 个循环都有一个缓慢的绘制和更新调用。

4

1 回答 1

0

问题在于缺少这些行:

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

现在,我的应用程序没有挂断,但它什么也不渲染。

于 2012-07-06T07:47:32.340 回答