0

すでにGLFWライブラリを設定しており、ユーザーガイドによると、glfwInit()関数を使用して初期化する必要があります。その後、キーボードのキーを押した後、コールバック関数を呼び出すことができるはずですが、この関数は呼び出されなかったので、もっと簡単な方法でマウスの位置を取得してみました。しかし、それも機能しないので、GLFW全体に何か問題があると思います。

これは私のアプリケーションのメインループです。

while (!m_exit)
{

    int x, y;
    glfwGetMousePos(&x, &y);
    glfwPollEvents();
    gameCycle();                        // Do one cycle

    while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
    {
        // Check the pressence of commands
        if (!GetMessage (&msg, NULL, 0, 0))
        {
            return msg.wParam; // Hand the control on to system
        }

        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
}

また、このループの前に、GLFW:を初期化します。

// Initialize GLFW
if( !glfwInit() )
{
    exit( EXIT_FAILURE );
}

glfwSetKeyCallback(processKeys);

// Main message loop:
int loopRet = g_pGameAppLayer->mainLoop();

保存されている値xy変数を確認すると、値が渡されていないことを示す-858993460しか取得されません。

それで、私はセットアップで何が欠けていGLFWますか?

4

1 に答える 1

6

あなたの問題はここにあります:

その後、たとえば、キーボードのキーを押した後にコールバック関数を呼び出すことができるはずです

いいえ、すべきではありません。GLFW でウィンドウを作成するまで、入力を取得することはできません。これは一般に、多くのウィンドウ システムに当てはまります。ウィンドウがある場合にのみ入力を取得します。

于 2013-02-06T13:37:13.150 に答える