0

GLFW ウィンドウの非常に単純な実装を作成しました。私の実装はそのように見えます

// Include standard headers
#include <stdio.h>
#include <stdlib.h>

// Include glfw for window handling
#include <GLFW/glfw3.h>

int SCREEN_WIDTH = 1280;
int SCREEN_HEIGHT = 720;

GLFWwindow* window;

int main() {

    if(!glfwInit()) {
        fprintf( stderr, "Failed to initialize GLFW!\n" );
        return -1;
    }

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);


    window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Title", NULL, NULL);
    if( !window )
    {
        fprintf( stderr, "Failed to create window!\n" );
        glfwTerminate();
        return -1;
    }

    glClearColor(0.0f, 0.0f, 1.0f, 0.0f);

    do {
        glfwSwapBuffers(window);

    } while(!glfwGetKey(window, GLFW_KEY_ESCAPE));

    glfwTerminate();
    return 0;
}

正常にコンパイルされますが、アプリケーションを実行すると、「フリーズ」するだけで、正しいクリア カラーなどは表示されません。狂ったように考えるだけです (Windows 7 の「考える」カーソル アイコンが回転し、停止することはありません)。なぜこんなにフリーズするのだろうと思っているのですが、誰か考えがありますか?

編集:
私の問題の解決策が見つかりました。私は GLFW2 の例から学んでいましたが、最新バージョン (GLFW3) を使用するには、コードをいくつかやり直す必要がありました。私が気付いていなかったのは、 glSwapBuffers(window) 呼び出しがそれ自体で glfwPollEvents() を呼び出さないため、問題が発生したことです。

4

1 に答える 1

1
  1. バッファをクリアしていないため、クリアカラーが透けて見えません。

  2. いかなる種類の遅延も追加していないため、空のバッファーを完全にスワップしています (「狂ったように考える」)。

于 2013-09-25T21:52:01.947 に答える