glfw を使用してゲームを構築し始めました。私はCとC ++にはかなり慣れていませんが、以前はAndroidでopenGLを使用していました。私はすべてのopenGLの作業を行っており、glfwでスレッドを作成しようとしています.
ここにいくつかの基本的なテストコードがあります。ドキュメントの内容に似ています。
#include <GL/glfw.h>
#include <stdio.h>
GLFWthread thread;
void GLFWCALL testThread()
{
printf("hello\n");
}
int main()
{
printf("test\n");
glfwInit();
thread = glfwCreateThread(testThread, NULL);
glfwWaitThread(thread, GLFW_WAIT);
glfwTerminate();
return 1;
}
これは gcc で正常にコンパイルされ、期待どおりに動作します。
$ gcc -o glthread glthread.c -lglfw
$ ./glthread
test
hello
問題は、クラスのような C++ 機能を利用したいということです。g ++でコンパイルすると、これが得られます...
$ g++ -o glthread glthread.c -lglfw
glthread.c: In function ‘int main()’:
glthread.c:18: error: invalid conversion from ‘void (*)()’ to ‘void (*)(void*)’
glthread.c:18: error: initializing argument 1 of ‘GLFWthread glfwCreateThread(void (*)(void*), void*)’
クラスに入れると、重大なエラーがこれに変わります。
error: argument of type ‘void (Renderer::)()’ does not match ‘void (*)(void*)’
私が基本的に知りたいのは、c ++でglfwを使用してスレッドを作成することは可能ですか?
これに取り組むための私のメイン PC は、arch Linux マシンです。現在、コンパイラのバージョンを提供することはできません。それが助けになるなら、私は後でそれらを手に入れることができます.