音ゲーの出来ない雑魚のブログ

LWJGLとかのことをいうブログ

「moreover lwjgl」 3 三角形の表示

LWJGL3である必要性はありません(古いやり方だから)が、三角形を表示するプログラムを作ってみましょう。

では、ソースコードから。



解説

解説では、この前のWindowの表示にさらに足した物を解説することにします。
GLFW系は青色OpenGL系はオレンジにしています。

28行目 : GLFWを終える前に、Callbackらをすべて消しておきます。

void glfwFreeCallbacks(long window)

47行目 : WindowのAspect比を設定しています。

void glfwSetWindowAspectRatio(long window,int n,int d)

アスペクト比(Aspect ratio)とは、物の長辺と短辺の比のことです。この場合、例えば横と縦の比を"3 : 4"にしたいときは、

glfwSetWindowAspectRatio(window,3,4)

としましょう。

72~75行目 : Windowのサイズを変更した時のCallbackをラムダ式で指定しています。
ラムダ式のなかでは、GLFWWindowSizeCallbackIという関数型インターフェイスを使っています。そのなかにinvokeメソッドがあるため、Callback関数となっています。

void glfwSetWindowSizeCallback(long window,GLFWWindowSizeCallbackI cbfun)

74行目 : ViewPortを設定しています。

void glViewport(int x,int y,int w,int h)

ViewPortは、OpenGLの描画を指定した矩形ないで表示させるものです。つまり、Windowサイズに応じて図形の大きさを調整しています。

80行目 : OpenGLによる描画処理を開始します。

void glBegin(int mode)

OpenGLの描画をする際は、glBegin(int mode)と、glEnd()の間にしなければなりません。modeには、OpenGLで描画する図形のモードを指定できます。
モードにはいろいろな種類があります。

[GL_POINTS]
f:id:cakkby:20160221183936p:plain
[GL_LINES]
f:id:cakkby:20160221184041p:plain
(3つ目の点は、線が引かれないので表示されません)
[GL_LINE_STRIP]
f:id:cakkby:20160221184252p:plain
[GL_LINE_LOOP]
f:id:cakkby:20160221185203p:plain
[GL_TRIANGLES]
f:id:cakkby:20160221185311p:plain
[GL_QUADS]
f:id:cakkby:20160221215615p:plain
[GL_POLYGON]
f:id:cakkby:20160221220206p:plain


81行目~ : 頂点座標を指定しています。

void glVertex3f(float x,float y,float z)

OpenGLの関数は基本的に、

gl***3f(float x,float y,float z);

glは、OpenGL系の関数の名前の始まりに必ずあります。
続いて関数の名前、引数の数、引数の型となっています。

というようになっています。

84行目 : でOpenGLの描画を終了しています。

void glEnd()



これだけで図形を描画することが出来ました。簡単ですね!

結果は、GL_TRIANGLESの時の写真通り(になるはず)です。