質問: "世界の始まり"; //ウィンドウのタイトル //---------------------------------------------------- // 関数プロトタイプ(後に呼び出す関数名と引数の宣言) //---------------------------------------------------- void Initialize(void); void Display(void); void Idle(void) {}; //---------------------------------------------------- // メイン関数 //---------------------------------------------------- int main(int argc, char *argv[]) { glutInit(&argc, argv);//環境の初期化 glutInitWindowPosition(WindowPositionX, WindowPositionY);//ウィンドウの位置の指定 glutInitWindowSize(WindowWidth, WindowHeight); //ウィンドウサイズの指定 glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);//ディスプレイモードの指定 glutCreateWindow(WindowTitle); //ウィンドウの作成 glutDisplayFunc(Display); //描画時に呼び出される関数を指定する(関数名:Display) glutIdleFunc(Idle); //プログラムアイドル状態時に呼び出される関数 Initialize(); //初期設定の関数を呼び出す glutMainLoop(); return 0; } //---------------------------------------------------- // 初期設定の関数 //---------------------------------------------------- void Initialize(void) { glClearColor(1.0, 1.0, 1.0, 1.0); //背景色 glEnable(GL_DEPTH_TEST);//デプスバッファを使用:glutInitDisplayMode() で GLUT_DEPTH を指定する } //---------------------------------------------------- // 描画の関数 //---------------------------------------------------- void Display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //バッファの消去 glutSwapBuffers(); //glutInitDisplayMode(GLUT_DOUBLE)でダブルバッファリングを利用可 } ```
回答: msys2にmingw-w64-x86_64-freeglut-3.0.0-4のパッケージをインストールして、 ソースコードをコピペしてclangで実行してみましたが、 特に問題は無いですね。 VSのデバッグパネルに`freeglut.dll`が見つからない等のエラーメッセージは出ていませんか? 生成された実行ファイルをエクスプローラから実行しても何も出ませんか? 余談ですがOpenGLの入門でGLUT(freeglut)を使用しているサイトは OpenGL3.x以前のレガシー扱いなAPIを使っているのが多いので、 今から始めるならGLFW + Modern OpenGL(3.3以上が望ましい)に変えたほうが良いです。 コメントに対する追記 プロジェクトをコンソールアプリケーションで作り直す前は、 このようなエラーが出たりしませんでしたか? ``` 1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------ 1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました。 1>C:\Users\UserName\Desktop\test\Debug\test.exe : fatal error LNK1120: 1 件の未解決の外部参照 1>プロジェクト "test.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== ``` プロジェクトを`Windows コンソール アプリケーション`で作成していると、 サブシステムにコンソールが設定されて main関数からスタートしコンソールウィンドウ(ウィンドウを開く場合であっても)が開くアプリケーションになります。 コンソールウィンドウが開くのを回避する方法が用意されているかもしれませんが、 glutのマニュアルをちゃんと読んだわけじゃないのでその辺はわからないです。 `Windows デスクトップ アプリケーション`で制作した場合は、 WinMain関数からスタートし、コンソールウィンドウは開かず意図的にウィンドウを生成しない限り何も表示されないアプリケーションになります。 WinMain関数の中からmainを呼ぶというてもありますが...。 設定は後からプロジェクトのプロパティから変更できますが、 間違えた場合は作り直したほうが良いと思います。 !サブシステム