LablGL は Objective Caml のための 3D グラフィックスのためのライブラリです。このライブラリは元々は C++ のために開発された OpenGL を O’Caml でも利用できるようにしたものです。lablgl をインストールして、[[lablgl のサンプルプログラム:http://www.ffconsultancy.com/ocaml/ray_tracer/index.html%5D%5Dをダウンロードしてコンパイルしたら以下の画像が出てきました。
以下がコンパイルに使った OMakefile です。
BYTE_ENABLED = false
NATIVE_ENABLED = true
OCAMLINCLUDES += +lablgl
OCAML_OTHER_LIBS = lablgl lablglut
OCamlProgram(ray, ray)
.DEFAULT: ray
一箇所だけソースを変更しました。110 行目で Glut を初期化する処理があります。
let argv = Glut.init Sys.argv in
このままにすると Objective Caml のコンパイラが、ここで宣言した argv って変数はあとで使ってないと文句を言うので、以下のように変更しました。
let _ = Glut.init Sys.argv in
レイトレースの計算には少し古めの iMac で数秒かかります。