<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2002/12/844db0449438b81c450413a2e9e39120"
  from="Nickolay Semyonov-Kolchin &lt;snob@s...&gt;"
  author="Nickolay Semyonov-Kolchin"
  date="2002-12-20T23:31:12"
  subject="Re: [Caml-list] Announce: camlgl - OpenGL bindings for OCaml"
  prev="2002/12/66dc1faff6b5a3bb7ef3ae148a2d0f48"
  next="2002/12/91aa7b1a95c3d3276c4f02d438ab4a82"
  prev-in-thread="2002/12/431d9e67f84c154cde1eedeff5a426b0"
  next-in-thread="2002/12/46151a95949e34dd9481c92ed5a51a6f"
  prev-thread="2002/12/c1ae28de1841637e1625891d4f57a4a2"
  next-thread="2002/12/15844ae4e1090111037f41a6baa2820a"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
<msg 
  url="2002/12/756c3fc027fc8ba373e7214c3dba2937"
  from="Nickolay Semyonov-Kolchin &lt;snob@s...&gt;"
  author="Nickolay Semyonov-Kolchin"
  date="2002-12-20T13:01:43"
  subject="[Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
<msg 
  url="2002/12/431d9e67f84c154cde1eedeff5a426b0"
  from="Sven Luther &lt;luther@d...&gt;"
  author="Sven Luther"
  date="2002-12-20T15:28:16"
  subject="Re: [Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
<msg 
  url="2002/12/844db0449438b81c450413a2e9e39120"
  from="Nickolay Semyonov-Kolchin &lt;snob@s...&gt;"
  author="Nickolay Semyonov-Kolchin"
  date="2002-12-20T23:31:12"
  subject="Re: [Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
<msg 
  url="2002/12/46151a95949e34dd9481c92ed5a51a6f"
  from="Jacques Garrigue &lt;garrigue@k...&gt;"
  author="Jacques Garrigue"
  date="2002-12-25T02:37:28"
  subject="Re: [Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
<msg 
  url="2002/12/4c196a76de2b694d0dbd2b92a973e49d"
  from="Nickolay Semyonov-Kolchin &lt;snob@s...&gt;"
  author="Nickolay Semyonov-Kolchin"
  date="2002-12-25T10:49:19"
  subject="[Caml-list] Summary: LablGL vs CamlGL">
</msg>
<msg 
  url="2002/12/6bd310d129ea8d41c4a95acaa8b53a0d"
  from="Christophe Raffalli &lt;Christophe.Raffalli@u...&gt;"
  author="Christophe Raffalli"
  date="2002-12-27T11:23:52"
  subject="Re: [Caml-list] Announce: camlgl - OpenGL bindings for OCaml">
</msg>
</msg>
</msg>
</msg>
</msg>
</thread>

<contents>
On Friday 20 December 2002 20:28, Sven Luther wrote:
&gt; &gt;
&gt; &gt; http://www.sf.net/projects/camlgl
&gt; &gt;
&gt; &gt; Key Features:
&gt; &gt; - Full OpenGL 1.4 support
&gt; &gt; - All window system independent ARB extensions supported
&gt; &gt; - All published NVidia extensions supported (including NV30)
&gt; &gt; - All ATI extensions supported
&gt; &gt; - Windows and Linux version
&gt; &gt; - GLFW bindings
&gt; &gt; - unsupported Glut and SDL bindings
&gt;
&gt; Would you care to comment about the difference between your bindings and
&gt; the lablgl bindings, 

Unsorted comparison:
- LablGL is a high level library build on top of the GL. 
- CamlGL provides direct GL bindings.
---------------------------------------------
/* C code */
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glRotatef(1.0f,0.0f,2.0f,0.0f);
glVertex3f(1.0f,1.0f,1.0f);

(* LablGL version *)
GlMat.mode `modelview;
GlMat.push ();
GlMat.rotate ~angle:1.0 ~y:2.0 ();
GlDraw.vertex ~x:1.0 ~y:1.0 ~z:1.0 ();

(* CamlGL version *)
open Gl
glMatrixMode cgl_modelview;
glPushMatrix ();
glRotatef 1.0 0.0 2.0 0.0;
glVertex3f 1.0 1.0 1.0;
---------------------------------------------
- LablGL (afaik) support all Ocaml enironments
- CamlGL (at present time) support only Linux and Windows (VC version)

- LablGL implements only a subset of OGL functions.
- CamlGL has full OGL support (with two exceptions)
glGetPointerv and glMultiDrawElements are not supported.

- LablGL has partitial GLU support
- CamlGL has no GLU support (and will never have)

- LablGL is a safe library
- CamlGL may produce "unstable" behaviour
I.e. if glGenLists or glGenTextures return value bigger than Caml max_int --- 
you are doomed. (Not possible with current NVidia &amp; ATI drivers). You can get 
a segfault by giving incorrect array bounds for GL data, and so on. 

- CamlGL uses dynamic function loading which can cause trouble under Windows 
enironment. (This is poor theory)

- CamlGL produces very big executable files: ~700K under Linux, ~400K under 
Windows. (I don't care about that)

- CamlGL programs can be much faster than LablGL (VA, VAR, VAO, VP, etc)

- CamlGL can be integrated with existing C libraries without any trouble. 
(Bigarrays)

- CamlGL can be used for modern 3d graphics. (Vertex shaders, Pixel shaders, 
Multitexturing, VAR/VAO)

&gt; the reason which made you implement a new
&gt; alternative 

LablGL has no support for GL extensions and uses syntax very different from 
normal GL. 

&gt;and the problems there would be in unifying both
&gt; implementations ?

LablGL can be implemented on top of my library. 

&gt; Would it also be possible to use it with lablgtk, do you think ?
&gt;

Yes, I'am using it with lablgtk. I can send you description (cryptic) how this 
can be done. 

Comments, suggestions are always welcome.

Nickolay
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

