class Gsk::GLShaderNode


A render node using a GL shader when drawing its children nodes.

Defined in:



Class Method Summary

Instance Method Summary

Instance methods inherited from class Gsk::RenderNode

==(other : self) ==, bounds : Graphene::Rect bounds, draw(cr : Cairo::Context) : Nil draw, finalize finalize, hash(hasher) hash, node_type : Gsk::RenderNodeType node_type, serialize : GLib::Bytes serialize, to_unsafe : Pointer(Void) to_unsafe, write_to_file(filename : String) : Bool write_to_file

Constructor methods inherited from class Gsk::RenderNode

new(pointer : Pointer(Void), transfer : GICrystal::Transfer) new

Class methods inherited from class Gsk::RenderNode

deserialize(bytes : GLib::Bytes, error_func : Gsk::ParseErrorFunc | Nil, user_data : Pointer(Void) | Nil) : Gsk::RenderNode | Nil deserialize, g_type : UInt64 g_type

Constructor Detail

def : Gsk::GLShader, bounds : Graphene::Rect, args : GLib::Bytes, children : Enumerable(Gsk::RenderNode) | Nil) : self #

Creates a Gsk::RenderNode that will render the given shader into the area given by bounds.

The args is a block of data to use for uniform input, as per types and offsets defined by the shader. Normally this is generated by Gsk::GLShader#format_args or Gsk::ShaderArgsBuilder.

See Gsk::GLShader for details about how the shader should be written.

All the children will be rendered into textures (if they aren't already Gsk::TextureNodes, which will be used directly). These textures will be sent as input to the shader.

If the renderer doesn't support GL shaders, or if there is any problem when compiling the shader, then the node will draw pink. You should use Gsk::GLShader#compile to ensure the shader will work for the renderer before using it.

[View source]
def #

Initialize a new GLShaderNode.

[View source]

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.

[View source]

Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.

def args : GLib::Bytes #

Gets args for the node.

[View source]
def child(idx : UInt32) : Gsk::RenderNode #

Gets one of the children.

[View source]
def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)

def n_children : UInt32 #

Returns the number of children

[View source]
def shader : Gsk::GLShader #

Gets shader code for the node.

[View source]