From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 132177F0AF for ; Sun, 6 Mar 2016 00:18:13 +0100 (CET) IronPort-PHdr: 9a23:eBwgaBYpHbL1c7p4bVm6SGj/LSx+4OfEezUN459isYplN5qZpcq6bnLW6fgltlLVR4KTs6sC0LqJ9f+wEjVcud6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUiv2OQc9HOnpAIma153xjLDtvcKDKFwU3HKUWvBbElaflU3prM4YgI9veO4a6yDihT92QdlQ3n5iPlmJnhzxtY+a9Z9n9DlM6bp6r5YTGfayQ6NtRrVdCHEiMnspzMztrxjKCwWVtVUGVWBDuRpSAhPZ6wn6U9/LuyX0v+552WHOFs3sTKsoXiyi4uFRQRHmgSMDNhYk9mDJz9d5kqVarVSvvUoskMbvfIiJOa8mLevmdtQASD8ZUw== Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=Christophe.Raffalli@univ-savoie.fr; spf=SoftFail smtp.mailfrom=raffalli@univ-savoie.fr; spf=None smtp.helo=postmaster@raffalli.eu Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of Christophe.Raffalli@univ-savoie.fr) identity=pra; client-ip=192.162.68.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="raffalli@univ-savoie.fr"; x-sender="Christophe.Raffalli@univ-savoie.fr"; x-conformance=sidf_compatible Received-SPF: SoftFail (mail3-smtp-sop.national.inria.fr: domain of raffalli@univ-savoie.fr is inclined to not designate 192.162.68.177 as permitted sender) identity=mailfrom; client-ip=192.162.68.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="raffalli@univ-savoie.fr"; x-sender="raffalli@univ-savoie.fr"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@raffalli.eu) identity=helo; client-ip=192.162.68.177; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="raffalli@univ-savoie.fr"; x-sender="postmaster@raffalli.eu"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BnGADHaNtWULFEosBdFhIBAoMxMG0BgnSwFYlECodLEAEBAQEBAQEBBQEBNU6CLYInEQYwPyMhAhEFL4hPBAqTK406j12OdQiGF4s/Cy0TGIEPBYdbj0+FY4gACoFjS4N5iFOOVTeBYQEBAQcBAQEBgiFpAYk/AQEB X-IPAS-Result: A0BnGADHaNtWULFEosBdFhIBAoMxMG0BgnSwFYlECodLEAEBAQEBAQEBBQEBNU6CLYInEQYwPyMhAhEFL4hPBAqTK406j12OdQiGF4s/Cy0TGIEPBYdbj0+FY4gACoFjS4N5iFOOVTeBYQEBAQcBAQEBgiFpAYk/AQEB X-IronPort-AV: E=Sophos;i="5.22,542,1449529200"; d="asc'?scan'208";a="167237679" Received: from vps29067.lws-hosting.com (HELO raffalli.eu) ([192.162.68.177]) by mail3-smtp-sop.national.inria.fr with ESMTP; 06 Mar 2016 00:18:12 +0100 Received: from localhost (bin73-1-78-240-16-62.fbx.proxad.net [78.240.16.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by raffalli.eu (Postfix) with ESMTPSA id 46E8C35214C4 for ; Sun, 6 Mar 2016 00:18:09 +0100 (CET) Date: Sun, 6 Mar 2016 00:18:02 +0100 From: Christophe Raffalli To: caml-list@inria.fr Message-ID: <20160305231802.GA14665@delli7.univ-savoie.fr> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="sdtB3X0nJg68CQEu" Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-Validation-by: christophe.raffalli@univ-savoie.fr Subject: [Caml-list] Announce: ocaml bindings for gles 3 --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Dear OCaml user, I am please to annouce a first alpha release of gles3 for OCaml. These are lightweight bindings for gles3, a join work with Alexandre Miquel. The package should be in the opam repository soon. URLs: http://lama.univ-savoie.fr/~raffalli/gles3/ http://lama.univ-savoie.fr/~raffalli/gles3/gles3-050316.tar.gz This is also a call for contributions, mainly: - to test and debug - port the egl.ml file to other platforms than linux/EGL/X11 (windows, OSX, linux/wayland, ios, android, ...) Cheers, Christophe Raffalli -------------------------------------------------------------------- [1]OCaml [2]GLES 3.0 bindings examples with shadows Introduction This project aims at providing a portable way to do OpenGL (precisely GLES) application using OCaml. It comes in three parts: * Low level bindings which allow to call directly GLES functions. This binding tries to be reasonably type-safe using polymorphic variants to encode Glenum type. The low level bindings also provide some sanity checks for the size of bigarrays which allow to capture quite a lot of errors with clear messages. * High level bindings: to provide some auxiliary functions like matrix inversion and ease the development. For instance, to use shaders, with the high level bindings, you use compile_shader with the sources code, get a value of type unit program. Then, you can set the variables of the shaders (uniform or attributes), either as constant or function and get a function to finally run the shaders. * A way to open a window, start the main loop and interact. Currently only EGL under X11 is supported but it would be nice to have support for other platforms (windows, OSX, android, ios, wayland, ...) with exactly the same interface. Authors * [3]Alexandre Miquel (initial low level bindings for GLES 2) * [4]Christophe Raffalli (partial port to GLES 3.0, high-level bindings and examples) Documentation * [5]Generated html from the MLI files * the examples: [6]examples/testa_gles.ml: a rotating cube [7]examples/testb_gles.ml: a rotating cube with a texture [8]examples/testc_gles.ml: 7 rotating cubes with simple shadow mapping [9]examples/testd_gles.ml: 7 rotating cubes and 8 implicit surfaces with simple shadow mapping TODO (please contribute !) * test and fix bugs ! * documentation * complete the low-level bindings * develop the high-level bindings guided by more examples * provide support for more platforms (see introduction) * find a way to support multiple version of GLES (at least 2.0, 3.0, 3.1) with only one OCaml library, and possibly in a transparent way when using the high-level bindings (i.e., the high lebel bindings should test the version and make the best choice) * collect regexp for error message in GLSL for most GLES vendors to give good error messages in all cases (only one vendor, nouveau/mesa supported currently). This is a pity that GLES does no define a standard at least for position in error messages. * ... Known bugs * Mixing vertex arrays and buffer seems not to work (but no error flag are positionned), for instance, vertex in a buffer and normal in an array result in wrong normals. One shoud check this on a C program... * Textures are not yet garbage collected ... should be fixed soon R=C3=A9f=C3=A9rences 1. http://caml.inria.fr/ 2. https://www.khronos.org/registry/gles 3. https://www.fing.edu.uy/~amiquel/ 4. file:///~raffalli 5. file:///home/raffalli/Caml/gles3/main.html 6. file:///home/raffalli/Caml/gles3/repos/examples/testa_gles.ml 7. file:///home/raffalli/Caml/gles3/repos/examples/testa_gles.ml 8. file:///home/raffalli/Caml/gles3/repos/examples/testa_gles.ml 9. file:///home/raffalli/Caml/gles3/repos/examples/testa_gles.ml --sdtB3X0nJg68CQEu Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlbbaSoACgkQi9jr/RgYAS5VGQCeLuFKPUHX1FEyze0GD1QSzL4C bcQAnjm+1etlf8+nZKtFe1HxPfQuNLMi =7nZq -----END PGP SIGNATURE----- --sdtB3X0nJg68CQEu--