今 OpenGLのver.1.1を使ってゲームを作ってるんですが
バージョンって上げたほうがいいですか?
このままでもいいのでしょうか?
バージョンを上げることにより関数も変わってしまうと思うので悩んでます
バージョンを上げた際に利点とかがあれば教えてください
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
とりあえず、素の知識だけだと不安なので、Wikipediaも参考にしています。
OpenGL1.1以降、となれば、プログラマラブルシェーダを使うことがメインになります。
そうなると、全く書き方が変わってきます。
マトリクスやライトは、自分で計算しなければなりません。(マトリクスは、GLMを使えばいいですが)
青い矩形を描くプログラム。
c
1glBegin(GL_TRIANGLE_STRIP); 2glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 3glVertex3f(-0.2f, 0.2f, 0.0f); 4glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 5glVertex3f(-0.2f, -0.2f, 0.0f); 6glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 7glVertex3f(0.2f, 0.2f, 0.0f); 8glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 9glVertex3f(0.2f, -0.2f, 0.0f); 10glEnd();
(OpenGLの固定機能なんて久々に書いたんで、間違っているかもしれないけど、)これが、こうなります。(だいぶ端折ってます)
c
1GLuint vs = glCreateShader(GL_VERTEX_SHADER); 2const char *vs_source = 3"attribute vec3 vertex;\n" 4"void main()\n" 5"{\n" 6" gl_Position = vec4(vertex, 1.0);\n" 7"}\n"; 8glShaderSource(vs, 1, &vs_source, NULL); 9glCompileShader(vs); 10GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); 11const char *fs_source = 12"void main()\n" 13"{\n" 14" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);\n" 15"}\n"; 16glShaderSource(fs, 1, &fs_source, NULL); 17glCompileShader(fs); 18GLuint program = glCreateProgram(); 19glAttachShader(program, vs); 20glAttachShader(program, fs); 21glLinkProgram(program); 22 23GLint loc = glGetAttribLocation(program, "vertex"); 24glEnableVertexAttribArray(loc); 25const GLfloat vertices[] = { -0.2f, 0.2f, 0.0f, -0.2f, -0.2f, 0.0f, 0.2f, 0.2f, 0.0f, 0.2f, -0.2f, 0.0f }; 26glVertexAttribPointer(loc, 3, GL_FLOAT, GL_FALSE, 0, vertices); 27 28glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 29
バージョンを上げた方がいいかは、プログラミングの目的によるでしょう。
勉強のためであれば、プログラマブルシェーダもやっておいた方がいいでしょう。
ゲームを作る事が優先であれば、…。
OpenGL1.1の次のバージョン1.5が登場したのは、2003年です。(上記Wikipediaによれば)
つまりOpenGL1.1は、15年以上前のハードウェアを対象とした物であり、その程度の機能しか持ち合わせてません。
シェーダを書けば、被写界深度などの画面エフェクトもしやすくなります。
言い換えれば、それほどグラフィックにこだわらないのであれば、無理にプログラマブルシェーダを使う必要もないでしょう。
後は、どのようなゲームを作るかによるので、ご自身でご検討ください。
ついでに余談ですが、WindowsでOpenGL1.1以降のバージョンを使うのであれば、GLEWというライブラリを使うのが楽ですよ。
あと、現在であればglut(Freeglut)よりもGLFWを使うことをおすすめします。
投稿2019/07/19 12:10
総合スコア3469
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。