質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

799閲覧

getsetoptionを使ったループ抜けを使いたい

Richr

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/12/24 06:13

編集2022/01/12 10:55

前提・実現したいこと

openglのfreeglutを使ってglutmainlopp()のループ抜けをしたいと思い以下のサイト(https://seesaawiki.jp/w/mikk_ni3_92/d/freeglut%ca%d403)を参考にしたところコンパイルは通ったもののコマンドプロント上で以下のようなエラーが発生しました
glutinitで初期化を行った後にglutSetOptionを使用しているのにも関わらずエラーが出ている理由が分かりません。
解決よろしくお願いします。

使用した言語C++
開発環境Visual studio 2019

発生している問題・エラーメッセージ

freeglut ERROR: Function <glutSetOption> called without first calling 'glutinit'

該当のソースコード

C++

1#include <GL/freeglut.h> 2#include <cstdio> 3 4//----------- プロトタイプ宣言 --------------// 5void display(); 6void reshape(int w, int h); 7void timer(int value); 8 9 10//------------- OpenGLの初期設定 ------------------// 11void GLUT_INIT() 12{ 13 glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); //ダブルバッファ、Zバッファ 14 glutInitWindowSize(640,480); 15 glutCreateWindow("glutSetOption"); 16} 17 18void GLUT_CALL_FUNC() 19{ 20 glutDisplayFunc(display); 21 glutReshapeFunc(reshape); 22 glutTimerFunc(0,timer,17); 23} 24 25void MY_INIT() 26{ 27 glClearColor(1.0, 1.0, 1.0, 1.0); 28 29 glEnable(GL_DEPTH_TEST);//ZバッファON 30} 31 32 33 34//------------- メイン関数 ----------------// 35int main(int argc, char **argv) 36{ 37 glutInit(&argc,argv); 38 39 GLUT_INIT(); 40 GLUT_CALL_FUNC(); 41 MY_INIT(); 42 glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS); 43 glutMainLoop(); 44 puts("Back from the free glutMainloop()"); 45 return 0; 46} 47 48//------------ ここからコールバック関数 ------------------// 49void display() 50{ 51 static int r = 0; 52 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 53 54 55 glColor3f(0,0,1); 56 57 glPushMatrix(); 58 glRotatef(float(r), 0.0, 1.0, 0.0); 59 static double data[]={0,0,0}; //オフセット 60 glutWireSierpinskiSponge(2,data,1);//シェルピンスキーの四面体 61 glPopMatrix(); 62 63 glColor3f(1,1,1); 64 65 glutSwapBuffers(); 66 67 if(++r > 360){ 68 r= 0; 69 } 70} 71 72void reshape(int w, int h) 73{ 74 glViewport(0, 0, w, h); 75 76 glMatrixMode(GL_PROJECTION); //行列モード切替 77 glLoadIdentity(); //行列初期化 78 gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); 79 80 glMatrixMode(GL_MODELVIEW); //行列モード切替 81 glLoadIdentity(); 82 gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 83} 84 85void timer(int t) 86{ 87 glutPostRedisplay(); 88 glutTimerFunc(t,timer,17); //タイマー関数 89}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問