[gephex-devel] opengl and gephex

Martin Bayer martin at gephex.org
Sat Jun 11 18:23:13 CEST 2005


>>> Thus easy
>>> rendering via Input_texture->Set(); and Output_texture->SetActive();
>>> will be possible (this would in the case of opengl bind a texture to a
>>> certain stage and set Output_texture as an active rendertarget). (this
>>> is still just a draft, so thoughts are welcome).   
>>
>> gl_core->texture_input_set(in_tex_1)
>> gl_core->texture_output_set(out_tex_1)
>>
> I'd really prefer the non-id variant (using a texture class instead)

I'm open to use pointers to objects instead off ids. There is no
big difference between both. I just called it id because the effect
coder should not use the pointer to call a method of the "texture object".

But you need the core pointer as parameter. Because at the construction
time of the gl_*_modules and gl_core_link_types there is no reference to
the gl_core wrapper object available.

You need a way to create a new texture if it isn't yet initialized. And
initialization is only possible with a pointer to the gl_core object.
And this object is only available at update() time.

1.) you can wrap all methods in something like that.

if( in_text_1->is_valid() )
 core->create_texture(in_text_1)
in_text_1->set_output()

2.) call the methods indirect via the core

core->texture_set_output(in_text_1)

core can do the lacy init work for you and delegates the method call to
the (new) object

core::texture_set_output(in_text_1)
{
  if( in_text_1->in_valid() )
    create_texture(in_text_1)
  in_text_1->set_output()
}

3.) add the core pointer to all texture methods:

in_text_1->set_output(core)

You can then implement the lacy init stuff in the set_output method of
the texture object.


This is just the interface to the module coder.
The implementation in the background can be very different.


>> It can and must initialize them lacy with the first access.

> Objects are always dependend on the core making it possible for them to
> initialize themselves at construction time and free their own resources
> upon destruction. A core object (and therefore a (possibly hidden at
> first) renderwindow) is crucial for all objects using opengl and has to
> be treaded special (which it is anyway since it will get connected to
> gl-modules automatically), meaning: be initialized.

This is not possible with the current 0.4 and 0.5 design. You need to
initialize them lacy. i don't see another clean way to distribute the
core ptr to the gl_*_modules and gl_*_types.

> Seems like we didn't fully agree after all :)

hehe, i only see some minor conflicts.

Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: OpenPGP digital signature
Url : http://lists.gephex.org/pipermail/gephex-devel/attachments/20050611/49b9a872/signature.pgp


More information about the gephex-devel mailing list