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 に答える