私はopenGLの初心者です。すべての単純な例で、main 関数には引数があり、glutinit 関数はそれらを使用します。しかし、なぜそれらが必要なのかわかりません。コマンド引数に何も書きませんが、プログラムは引き続き動作します。それらは何に使用されますか?例を挙げていただけますか?
glutInit(&argc, argv)
私はopenGLの初心者です。すべての単純な例で、main 関数には引数があり、glutinit 関数はそれらを使用します。しかし、なぜそれらが必要なのかわかりません。コマンド引数に何も書きませんが、プログラムは引き続き動作します。それらは何に使用されますか?例を挙げていただけますか?
glutInit(&argc, argv)
glutInit は、GLUT ライブラリを初期化するために使用されます。C では、コマンド ライン引数を受け入れることができます。コマンドライン引数は、DOS や Linux などのコマンドライン オペレーティング システムのプログラム名の後に指定され、オペレーティング システムからプログラムに渡されます。プログラムでコマンド ライン引数を使用するには、最初に main 関数の完全な宣言を理解する必要があります。これは以前は引数を受け入れませんでした。実際、main は実際には 2 つの引数を受け入れることができます。1 つの引数はコマンド ライン引数の数であり、もう 1 つの引数はすべてのコマンド ライン引数の完全なリストです。
argcp: main からのプログラムの変更されていない argc 変数へのポインター。戻ると、argcp が指す値が更新されます。これは、glutInit が GLUT ライブラリ用のコマンド ライン オプションを抽出するためです。argv: main からのプログラムの未変更の argv 変数。argcp と同様に、argv のデータは更新されます。これは、glutInit が GLUT ライブラリによって理解されるコマンド ライン オプションを抽出するためです。
glutInit はコマンド ライン オプションも処理しますが、特定のオプションの解析はウィンドウ システムに依存します。
もう 1 つのシナリオは、UNIX main()
がコマンド ライン引数を受け入れる場合であり、GLUT によって「パイプ」される必要はありません。
この場合、「カスタム」GLUT 初期化変数を内部のどこかで宣言して初期化する必要がありますmain()
。
int foo = 1;
char * bar[1] = {" "};
glutInit(&foo, bar);