Jump to page: 1 2
Thread overview
Glamour – An opengl wrapper for D
Jul 26, 2012
David
Jul 26, 2012
Mike Parker
Jul 26, 2012
OlaOst
Jul 26, 2012
David
Jul 27, 2012
Rene Zwanenburg
Jul 27, 2012
David
Jul 27, 2012
Rene Zwanenburg
Jul 27, 2012
David
Jul 27, 2012
David
Jul 28, 2012
Jonas Drewsen
Jul 28, 2012
David
Jul 29, 2012
Jakob Ovrum
Jul 29, 2012
Jonas Drewsen
Jul 29, 2012
David
July 26, 2012
https://github.com/Dav1dde/glamour

Glamour wraps opengl is not an opengl binding. Currently it supports:

* Sampler objects
* Textures (1D, 2D, 2D_ARRAY, 3D)
* Shaders
* Buffers (Elementbuffers and "normal" VBOs)

For the shaders a custom format is used:

-----
vertex:
    // here goes the vertex shader

geometry:
   // here goes the geometry shader (this section can be omitted)

fragment:
   // here goes the fragment shader
-----

Readme/Installation: https://github.com/Dav1dde/glamour/blob/master/README.md
Documentation: http://dav1dde.github.com/glamour/


TODO:
 * support more opengl "backends", like statically linked opengl (in glamour.gl)
 * polish up the index.d and write a proper installation guide

Pull requests are appreciated.
July 26, 2012
On Thursday, 26 July 2012 at 13:47:42 UTC, David wrote:
> https://github.com/Dav1dde/glamour
>
> Glamour wraps opengl is not an opengl binding. Currently it supports:
>
> * Sampler objects
> * Textures (1D, 2D, 2D_ARRAY, 3D)
> * Shaders
> * Buffers (Elementbuffers and "normal" VBOs)
>
>

Nice one!
July 26, 2012
On Thursday, 26 July 2012 at 13:47:42 UTC, David wrote:
> https://github.com/Dav1dde/glamour
>
> Glamour wraps opengl is not an opengl binding. Currently it supports:
>
> * Sampler objects
> * Textures (1D, 2D, 2D_ARRAY, 3D)
> * Shaders
> * Buffers (Elementbuffers and "normal" VBOs)
>
> For the shaders a custom format is used:
>
> -----
> vertex:
>     // here goes the vertex shader
>
> geometry:
>    // here goes the geometry shader (this section can be omitted)
>
> fragment:
>    // here goes the fragment shader
> -----
>
> Readme/Installation: https://github.com/Dav1dde/glamour/blob/master/README.md
> Documentation: http://dav1dde.github.com/glamour/
>
>
> TODO:
>  * support more opengl "backends", like statically linked opengl (in glamour.gl)
>  * polish up the index.d and write a proper installation guide
>
> Pull requests are appreciated.

Nice work! I converted my shader sandbox program to use glamour in just a couple of hours :)

I hit a snag with DLL issues using Devil, but added code for loading textures with SDLImage. It's in a pull request now.
July 26, 2012
> Nice work! I converted my shader sandbox program to use glamour in just
> a couple of hours :)
>
> I hit a snag with DLL issues using Devil, but added code for loading
> textures with SDLImage. It's in a pull request now.

Thanks!

And also thanks for the already merged pull-request :).
July 27, 2012
Nice work. I did a quick review of your code, and have some suggestions for possible improvement. Apologies for not creating a pull request, but I don't have a Git client installed.

Check for errors after every GL call that can generate an error. Because GL functions fail silently, debugging why your program misbehaves after a failed GL call is almost as annoying as finding the cause of heap corruption. Also make sure that every GL call is covered, or you may get your errors at the wrong functions. The error code will not reset once it is set, until glGetError is called. These checks should be disabled in a release build, because they're quite costly.

All resources are released using a release method, not the destructor. This is good. But to ease debugging, set the handle to zero in release(), and check for a zero handle in the destructor. Log a warning or something like that if the check fails.

Some functions have overloads for both GLuint's and wrapper instances. Unless you really need the GLuint versions, it's probably better to remove these. Users should either use the wrappers for everything or not at all, anything in between will cause bloat, ugliness, and errors.

Shader.shaders: perhaps rename to shaderSources?

The ElementBuffer and Buffer constructors accepting a pointer will not compile, the pointer version of set_data requires a size argument.

On Thursday, 26 July 2012 at 13:47:42 UTC, David wrote:
> https://github.com/Dav1dde/glamour
>
> Glamour wraps opengl is not an opengl binding. Currently it supports:
>
> * Sampler objects
> * Textures (1D, 2D, 2D_ARRAY, 3D)
> * Shaders
> * Buffers (Elementbuffers and "normal" VBOs)
>
> For the shaders a custom format is used:
>
> -----
> vertex:
>     // here goes the vertex shader
>
> geometry:
>    // here goes the geometry shader (this section can be omitted)
>
> fragment:
>    // here goes the fragment shader
> -----
>
> Readme/Installation: https://github.com/Dav1dde/glamour/blob/master/README.md
> Documentation: http://dav1dde.github.com/glamour/
>
>
> TODO:
>  * support more opengl "backends", like statically linked opengl (in glamour.gl)
>  * polish up the index.d and write a proper installation guide
>
> Pull requests are appreciated.


July 27, 2012
>  Check for errors after every GL call that can generate an error. Because
> GL functions fail silently, debugging why your program misbehaves after
> a failed GL call is almost as annoying as finding the cause of heap
> corruption. Also make sure that every GL call is covered, or you may get
> your errors at the wrong functions. The error code will not reset once
> it is set, until glGetError is called. These checks should be disabled
> in a release build, because they're quite costly.

I was about to implement it, but I thought it isn't necassary, but maybe I was just wrong. I'll think about it (I will definitly add a template to glamour.utils which calls the OpenGL method and adds a check)

> All resources are released using a release method, not the destructor.
> This is good. But to ease debugging, set the handle to zero in
> release(), and check for a zero handle in the destructor. Log a warning
> or something like that if the check fails.

Good idea.

> Some functions have overloads for both GLuint's and wrapper instances.
> Unless you really need the GLuint versions, it's probably better to
> remove these. Users should either use the wrappers for everything or not
> at all, anything in between will cause bloat, ugliness, and errors.

Really, where?
If you mean the `unit` param for Samplers/Textures, that is needed, sometimes you just wanna bind the Sampler/Texture to a specific unit.

> Shader.shaders: perhaps rename to shaderSources?

Good idea.

> The ElementBuffer and Buffer constructors accepting a pointer will not
> compile, the pointer version of set_data requires a size argument.

Right.


Thanks for your input.
July 27, 2012
On Friday, 27 July 2012 at 13:29:55 UTC, David wrote:
>> Some functions have overloads for both GLuint's and wrapper instances.
>> Unless you really need the GLuint versions, it's probably better to
>> remove these. Users should either use the wrappers for everything or not
>> at all, anything in between will cause bloat, ugliness, and errors.
>
> Really, where?
> If you mean the `unit` param for Samplers/Textures, that is needed, sometimes you just wanna bind the Sampler/Texture to a specific unit.

Those are the ones I was talking about. But yeah, I agree that can be useful.
July 27, 2012
Am 27.07.2012 15:29, schrieb David:
>>  Check for errors after every GL call that can generate an error. Because
>> GL functions fail silently, debugging why your program misbehaves after
>> a failed GL call is almost as annoying as finding the cause of heap
>> corruption. Also make sure that every GL call is covered, or you may get
>> your errors at the wrong functions. The error code will not reset once
>> it is set, until glGetError is called. These checks should be disabled
>> in a release build, because they're quite costly.
>
> I was about to implement it, but I thought it isn't necassary, but maybe
> I was just wrong. I'll think about it (I will definitly add a template
> to glamour.utils which calls the OpenGL method and adds a check)

Done. Added the template function and every call is checked (if compiled with -debug).

>> All resources are released using a release method, not the destructor.
>> This is good. But to ease debugging, set the handle to zero in
>> release(), and check for a zero handle in the destructor. Log a warning
>> or something like that if the check fails.
>
> Good idea.

Done. (If compiled with -debug)

>> Some functions have overloads for both GLuint's and wrapper instances.
>> Unless you really need the GLuint versions, it's probably better to
>> remove these. Users should either use the wrappers for everything or not
>> at all, anything in between will cause bloat, ugliness, and errors.
>
> Really, where?
> If you mean the `unit` param for Samplers/Textures, that is needed,
> sometimes you just wanna bind the Sampler/Texture to a specific unit.

This stays as it is.

>> Shader.shaders: perhaps rename to shaderSources?
>
> Good idea.

Renamed.

>> The ElementBuffer and Buffer constructors accepting a pointer will not
>> compile, the pointer version of set_data requires a size argument.
>
> Right.

Fixed.

July 27, 2012
On 7/26/12 9:47 AM, David wrote:
> https://github.com/Dav1dde/glamour

http://www.reddit.com/r/programming/comments/x9htl/glamour_an_opengl_wrapper_for_d/


Andrei

July 27, 2012
Am 27.07.2012 21:45, schrieb Andrei Alexandrescu:
> On 7/26/12 9:47 AM, David wrote:
>> https://github.com/Dav1dde/glamour
>
> http://www.reddit.com/r/programming/comments/x9htl/glamour_an_opengl_wrapper_for_d/
>
>
>
> Andrei
>

Cool, thanks.
« First   ‹ Prev
1 2