schell / gelatin

A nice Haskell graphics API. There's always room for jello.
BSD 3-Clause "New" or "Revised" License
41 stars 4 forks source link

How hard would it be to restrict `gelatin-gl` to GLES30? #2

Closed cies closed 7 years ago

cies commented 8 years ago

I really like this project and find many things in here that would fit a project that I'm currently working on. Especially now that SDL2 is supported (which I need for multi-touch).

But I want to be able to compile to iOS, so GLES is a requirement. I wonder how hard it would be to make a gelatin-gles backend. Just to get an idea for the amount of work it will cost me.

schell commented 8 years ago

Thank you for your interest! Targeting OpenGL ES and mobile in general has been a goal of mine. Off the top of my head I don't think gelatin-gl is using any special operations that are not supported by OpenGL ES. I think a lot of the code can be reused. gelatin-gl uses the gl package, so if gl will support OpenGL ES then we may be able to use gelatin-gl with some extra build flags and small amount of modification. The shaders are using version 330, but they may work fine with version 300 es as well.

More than anything else it will take having a working cross compiler and a lot of knowledge about the differences between OpenGL and OpenGL ES, which I don't know, but I'm happy to help.

schell commented 8 years ago

Also keep in mind that this library is very turbulent right now and it will be a couple months or more before it settles down and is ready for a 1.0 release.

cies commented 8 years ago

Thank you for your interest!

Thank you for choosing an open source license :)

Targeting OpenGL ES and mobile in general has been a goal of mine.

Good to hear. It's the most widely adopted GL* spec at the moment.

gelatin-gl uses the gl package, so if gl will support OpenGL ES

gl does support, it even has modules for the GLES 20 and 30 subsets:

https://hackage.haskell.org/package/gl-0.7.8/docs/Graphics-GL-Embedded20.html https://hackage.haskell.org/package/gl-0.7.8/docs/Graphics-GL-Embedded30.html

with some extra build flags and small amount of modification.

Or just do it like gl; provide a module for it!

More than anything else it will take having a working cross compiler and a lot of knowledge about the differences between OpenGL and OpenGL ES, which I don't know, but I'm happy to help.

I've gained some experience with that in the past 6 months (both on iOS and Android, though not GLES specific).

Also keep in mind that this library is very turbulent right now and it will be a couple months or more before it settles down and is ready for a 1.0 release.

I love turbulent libs.

Have a great day. :)

schell commented 8 years ago

You too! Let's keep this issue open so we can continue to work on this :+1:

schell commented 8 years ago

I've removed the explicit attribute layout in the glsl shaders in favor of a more Haskellish solution using glBindAttribLocation. That was the only non-OpenGL ES functionality I can recall.