Cogl.Attribute¶
- Subclasses:
None
Methods¶
- Inherited:
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
class |
|
|
|
|
|
|
Virtual Methods¶
None
Fields¶
None
Class Details¶
- class Cogl.Attribute¶
- Bases:
- Abstract:
No
- classmethod new(attribute_buffer, name, stride, offset, components, type)¶
- Parameters:
attribute_buffer (
Cogl.AttributeBuffer
) – TheCogl.AttributeBuffer
containing the actual attribute dataname (
str
) – The name of the attribute (used to reference it from GLSL)stride (
int
) – The number of bytes to jump to get to the next attribute value for the next vertex. (Usuallysizeof (MyVertex)
)offset (
int
) – The byte offset from the start of attribute_buffer for the first attribute value. (Usuallyoffsetof (MyVertex, component0)
components (
int
) – The number of components (e.g. 4 for an rgba color or 3 for and (x,y,z) position)type (
Cogl.AttributeType
) – FIXME
- Returns:
A newly allocated
Cogl.Attribute
describing the layout for a list of attribute values stored in array.- Return type:
Describes the layout for a list of vertex attribute values (For example, a list of texture coordinates or colors).
The name is used to access the attribute inside a GLSL vertex shader and there are some special names you should use if they are applicable:
“cogl_position_in” (used for vertex positions)
“cogl_color_in” (used for vertex colors)
“cogl_tex_coord0_in”, “cogl_tex_coord1”, … (used for vertex texture coordinates)
“cogl_normal_in” (used for vertex normals)
“cogl_point_size_in” (used to set the size of points per-vertex. Note this can only be used if %COGL_FEATURE_ID_POINT_SIZE_ATTRIBUTE is advertised and
Cogl.Pipeline.set_per_vertex_point_size
() is called on the pipeline.
The attribute values corresponding to different vertices can either be tightly packed or interleaved with other attribute values. For example it’s common to define a structure for a single vertex like:
typedef struct { float x, y, z; /<!-- -->* position attribute *<!-- -->/ float s, t; /<!-- -->* texture coordinate attribute *<!-- -->/ } MyVertex;
And then create an array of vertex data something like:
MyVertex vertices[100] = { .... }
In this case, to describe either the position or texture coordinate attribute you have to move
sizeof (MyVertex)
bytes to move from one vertex to the next. This is called the attribute stride. If you weren’t interleving attributes and you instead had a packed array of float x, y pairs then the attribute stride would be(2 * sizeof (float))
. So the stride is the number of bytes to move to find the attribute value of the next vertex.Normally a list of attributes starts at the beginning of an array. So for the
MyVertex
example above the offset is the offset inside theMyVertex
structure to the first component of the attribute. For the texture coordinate attribute the offset would beoffsetof (MyVertex, s)
or instead of using the offsetof macro you could usesizeof (float) * 3
. If you’ve divided your array into blocks of non-interleved attributes then you will need to calculate the offset as the number of bytes in blocks preceding the attribute you’re describing.An attribute often has more than one component. For example a color is often comprised of 4 red, green, blue and alpha components, and a position may be comprised of 2 x and y components. You should aim to keep the number of components to a minimum as more components means more data needs to be mapped into the GPU which can be a bottlneck when dealing with a large number of vertices.
Finally you need to specify the component data type. Here you should aim to use the smallest type that meets your precision requirements. Again the larger the type then more data needs to be mapped into the GPU which can be a bottlneck when dealing with a large number of vertices.
New in version 1.4.
- classmethod new_const_1f(context, name, value)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)value (
float
) – The constant value for the attribute
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant value.- Return type:
Creates a new, single component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constant value is a single precision floating point scalar which should have a corresponding declaration in GLSL code like:
[| attribute float name; |]
- classmethod new_const_2f(context, name, component0, component1)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)component0 (
float
) – The first component of a 2 component vectorcomponent1 (
float
) – The second component of a 2 component vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 2 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (component0, component1) represent a 2 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec2 name; |]
- classmethod new_const_2fv(context, name, value)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)value (
float
) – A pointer to a 2 component float vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 2 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (value[0], value[1]) represent a 2 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec2 name; |]
- classmethod new_const_2x2fv(context, name, matrix2x2, transpose)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)matrix2x2 (
float
) – A pointer to a 2 by 2 matrixtranspose (
int
) – Whether the matrix should be transposed on upload or not
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant matrix.- Return type:
Creates a new matrix attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
matrix2x2 represent a square 2 by 2 matrix specified in column-major order (each pair of consecutive numbers represents a column) which should have a corresponding declaration in GLSL code like:
[| attribute mat2 name; |]
If transpose is
True
then all matrix components are rotated around the diagonal of the matrix such that the first column becomes the first row and the second column becomes the second row.
- classmethod new_const_3f(context, name, component0, component1, component2)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)component0 (
float
) – The first component of a 3 component vectorcomponent1 (
float
) – The second component of a 3 component vectorcomponent2 (
float
) – The third component of a 3 component vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 3 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (component0, component1, component2) represent a 3 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec3 name; |]
unless the built in name “cogl_normal_in” is being used where no explicit GLSL declaration need be made.
- classmethod new_const_3fv(context, name, value)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)value (
float
) – A pointer to a 3 component float vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 3 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (value[0], value[1], value[2]) represent a 3 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec3 name; |]
unless the built in name “cogl_normal_in” is being used where no explicit GLSL declaration need be made.
- classmethod new_const_3x3fv(context, name, matrix3x3, transpose)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)matrix3x3 (
float
) – A pointer to a 3 by 3 matrixtranspose (
int
) – Whether the matrix should be transposed on upload or not
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant matrix.- Return type:
Creates a new matrix attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
matrix3x3 represent a square 3 by 3 matrix specified in column-major order (each triple of consecutive numbers represents a column) which should have a corresponding declaration in GLSL code like:
[| attribute mat3 name; |]
If transpose is
True
then all matrix components are rotated around the diagonal of the matrix such that the first column becomes the first row and the second column becomes the second row etc.
- classmethod new_const_4f(context, name, component0, component1, component2, component3)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)component0 (
float
) – The first component of a 4 component vectorcomponent1 (
float
) – The second component of a 4 component vectorcomponent2 (
float
) – The third component of a 4 component vectorcomponent3 (
float
) – The fourth component of a 4 component vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 4 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (component0, component1, component2, constant3) represent a 4 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec4 name; |]
unless one of the built in names “cogl_color_in”, “cogl_tex_coord0_in or “cogl_tex_coord1_in” etc is being used where no explicit GLSL declaration need be made.
- classmethod new_const_4fv(context, name, value)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)value (
float
) – A pointer to a 4 component float vector
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant vector.- Return type:
Creates a new, 4 component, attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
The constants (value[0], value[1], value[2], value[3]) represent a 4 component float vector which should have a corresponding declaration in GLSL code like:
[| attribute vec4 name; |]
unless one of the built in names “cogl_color_in”, “cogl_tex_coord0_in or “cogl_tex_coord1_in” etc is being used where no explicit GLSL declaration need be made.
- classmethod new_const_4x4fv(context, name, matrix4x4, transpose)¶
- Parameters:
context (
Cogl.Context
) – ACogl.Context
name (
str
) – The name of the attribute (used to reference it from GLSL)matrix4x4 (
float
) – A pointer to a 4 by 4 matrixtranspose (
int
) – Whether the matrix should be transposed on upload or not
- Returns:
A newly allocated
Cogl.Attribute
representing the given constant matrix.- Return type:
Creates a new matrix attribute whose value remains constant across all the vertices of a primitive without needing to duplicate the value for each vertex.
matrix4x4 represent a square 4 by 4 matrix specified in column-major order (each 4-tuple of consecutive numbers represents a column) which should have a corresponding declaration in GLSL code like:
[| attribute mat4 name; |]
If transpose is
True
then all matrix components are rotated around the diagonal of the matrix such that the first column becomes the first row and the second column becomes the second row etc.
- get_buffer()¶
- Returns:
the
Cogl.AttributeBuffer
that was set withCogl.Attribute.set_buffer
() orCogl.Attribute.new
().- Return type:
New in version 1.10.
- get_normalized()¶
- Returns:
the value of the normalized property set with
Cogl.Attribute.set_normalized
().- Return type:
New in version 1.10.
- set_buffer(attribute_buffer)¶
- Parameters:
attribute_buffer (
Cogl.AttributeBuffer
) – ACogl.AttributeBuffer
Sets a new
Cogl.AttributeBuffer
for the attribute.New in version 1.10.
- set_normalized(normalized)¶
- Parameters:
normalized (
int
) – The new value for the normalized property.
Sets whether fixed point attribute types are mapped to the range 0→1. For example when this property is
True
and aCogl.AttributeType.UNSIGNED_BYTE
type is used then the value 255 will be mapped to 1.0.The default value of this property depends on the name of the attribute. For the builtin properties cogl_color_in and cogl_normal_in it will default to
True
and for all other names it will default toFalse
.New in version 1.10.