2017-04-08 13 views
1

glfwInit()のJavaDoc:glfwInit()非メインスレッドからLWJGL 3状態の

この機能は、メインスレッドから呼び出されなければなりません。

しかし、私は窓10を実行しているAcerのマシン上でこれをテストしてみた、と私はある限り、それは他のどのGLFWと同じスレッドであるとして、上と呼ばれるスレッドglfwInit()関係ないことを発見しましたコール。

マニュアルは間違っているのですか、特定のマシンやOSにのみ適用されますか?

答えて

2

それがどのスレッドglfwInit()問題ではないことを私が見つけたすべての

最初に呼ばれています。何かがうまくいくと思われるだけで、それが機能し続けることを意味するわけではありません。言い換えれば、特定のイベントによって、まだテストしていないアプリケーションがクラッシュする可能性があります。

この関数は、メインスレッドからのみ呼び出される必要があります。

ここで重要なのは、GLFW documentationが「メインスレッド」の意味を決して指定しないことです。

クォートGLFWの開発者および管理者Camilla Löwy/elmindreda

Cocoaには、メインスレッドからのみアクセスできる単一のイベントキューがあり、ほとんどのウィンドウ操作で同じことが行われます。 Win32にはスレッドごとに1つのイベントキューがあり、ウィンドウはそれらを作成したスレッドのキューに関連付けられています。 X11には単一のキューがあり、イベント処理とウィンドウ操作は任意のスレッドから実行できます。 GLFWによって課される制限は、プログラムが移植可能であることを保証することです。この制限は強制されません。つまり、図書館では自分が足で自分を撃ってしまうことを防ぐことを試みません。 プログラムのロードまたはレンダリングをブロックする場合は、別のスレッドに配置します。このため、バッファのレンダリングとスワップに必要なものはすべてのプラットフォームでスレッドセーフです。

GLFWによって課される制限は、プログラムが移植可能であることを保証することです。この制限は強制されません。つまり、図書館では自分が足で自分を撃ってしまうことを防ぐことを試みません。

です。ココアは幸せではありません。しかし、ウィンドウとOpenGLコンテキストが同じスレッド上に作成されていることを前提とすると、問題はありません。

しかし、最終的にそれはプログラムがポータブルであることを確認にルールによってプレイする方が良いでしょう。

関連する問題