3D技術研究所Wiki > OpenGL > OpenGLコーディングスタイル比較

OpenGL(WebGL含む)コーディングスタイルをまとめています。
各種ライブラリ選びの参考にしてください。

情報

各技術については関連技術を参照してください。

目次


OpenGL系

OpenGL(C言語)のコーディングスタイル

1
2
3
#include <gl/gl.h>

glClear(GL_COLOR_BUFFER_BIT);

これがOpenGL標準のスタイルになります。

LWJGL(Java)のコーディングスタイル

1
2
3
import static org.lwjgl.opengl.GL11.*;

glClear(GL_COLOR_BUFFER_BIT);

定数と関数がstaticなのでOpenGLと全く同じ記述ができます。
C,C++,Objective-CとJavaで同一コードを使いたい場合はLWJGLがおすすめです。
Androidなど他のJavaプラットフォームではそのまま使えません。

JOGL(Java)のコーディングスタイル

1
2
3
4
5
6
import javax.media.opengl.GL;
import static javax.media.opengl.GL.*;

GL gl;

gl.glClear(GL_COLOR_BUFFER_BIT);

OpenGLインターフェース(GL)を経由しているスタイルです。
'gl.' 部分を空白で置換すればC,C++,Objective-Cから使えるようになります。

Android OpenGL(Java)のコーディングスタイル

1
2
3
4
5
6
import javax.microedition.khronos.opengles.GL10;
import static javax.microedition.khronos.opengles.GL10.*;

GL10 gl;

gl.glClear(GL_COLOR_BUFFER_BIT);

OpenGLインターフェース(GL10)を経由しているスタイルです。
'gl.' 部分を空白で置換すればC,C++,Objective-Cから使えるようになります。

WebGL系

WebGL(JavaScript)のコーディングスタイル

1
2
3
var gl = canvas.getContext('experimental-webgl');

gl.clear(gl.COLOR_BUFFER_BIT);

これがWebGL標準の記述スタイルです。
定数は接頭辞GL_が消え、定数にアクセスするためgl.COLOR_BUFFER_BITになっています。
関数は接頭辞glが消え、Java推奨スタイル(ローワーキャメル方式)になっています。

GwtGL(Java)のコーディングスタイル

1
2
3
4
5
6
import com.googlecode.gwtgl.binding.WebGLRenderingContext;
import static com.googlecode.gwtgl.binding.WebGLRenderingContext.*;

WebGLRenderingContext gl = (WebGLRenderingContext)canvas.getContext("experimental-webgl");

gl.clear(COLOR_BUFFER_BIT);

static-access警告を無視すればWebGLと全く同じ記述ができます。

1
2
3
4
5
@SuppressWarnings("static-access")
public void test() {
    WebGLRenderingContext gl = (WebGLRenderingContext)canvas.getContext("experimental-webgl");
    gl.clear(gl.COLOR_BUFFER_BIT);
}

gwt-g3d(Java)のコーディングスタイル

1
2
3
4
5
6
import gwt.g3d.client.gl2;
static import gwt.g3d.client.gl2.enums.ClearBufferMask.*;

GL2 gl = GL2ContextHelper.getGL2(canvas);

gl.clear(COLOR_BUFFER_BIT);

定数がEnum化されていることを除けばGwtGLと同じです。
static-access警告を無視すればWebGLと全く同じ記述ができます。

1
2
3
4
5
@SuppressWarnings("static-access")
public void test() {
    GL2 gl = GL2ContextHelper.getGL2(canvas);
    gl.clear(gl.COLOR_BUFFER_BIT);
}


関連ページ


スポンサードリンク

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS