Shader attribute

It will use either the uniform value or the data at array_pointer if and only if array_enabled.

Introduced properties

fun array(array: Array[Float], data_per_vertex: Int)

gamnit :: Attribute :: array

Define the array of vertex data
fun array_enabled: Bool

gamnit :: Attribute :: array_enabled

Is the array attribute enabled?
fun array_enabled=(value: Bool)

gamnit :: Attribute :: array_enabled=

Set whether to use the data at array_pointer over uniform.
init defaultinit(program: GLProgram, name: String, location: Int, size: Int)

gamnit :: Attribute :: defaultinit

Redefined properties

redef type SELF: Attribute

gamnit $ Attribute :: SELF

Type of this instance, automatically specialized in every class

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun array(array: Array[Float], data_per_vertex: Int)

gamnit :: Attribute :: array

Define the array of vertex data
fun array_enabled: Bool

gamnit :: Attribute :: array_enabled

Is the array attribute enabled?
fun array_enabled=(value: Bool)

gamnit :: Attribute :: array_enabled=

Set whether to use the data at array_pointer over uniform.
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
init defaultinit(program: GLProgram, name: String, location: Int, size: Int)

gamnit :: Attribute :: defaultinit

init defaultinit(program: GLProgram, name: String, location: Int, size: Int)

gamnit :: ShaderVariable :: defaultinit

fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun is_active: Bool

gamnit :: ShaderVariable :: is_active

Is self an active uniform or attribute in the program?
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun location: Int

gamnit :: ShaderVariable :: location

Location of self in the compiled program
protected fun location=(location: Int)

gamnit :: ShaderVariable :: location=

Location of self in the compiled program
fun name: String

gamnit :: ShaderVariable :: name

Name of self in the program source
protected fun name=(name: String)

gamnit :: ShaderVariable :: name=

Name of self in the program source
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun program: GLProgram

gamnit :: ShaderVariable :: program

The GamnitProgram to which self belongs
protected fun program=(program: GLProgram)

gamnit :: ShaderVariable :: program=

The GamnitProgram to which self belongs
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
fun size: Int

gamnit :: ShaderVariable :: size

Number of elements in this array (1 for scalars and more for vectors)
protected fun size=(size: Int)

gamnit :: ShaderVariable :: size=

Number of elements in this array (1 for scalars and more for vectors)
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
package_diagram gamnit::Attribute Attribute gamnit::ShaderVariable ShaderVariable gamnit::Attribute->gamnit::ShaderVariable core::Object Object gamnit::ShaderVariable->core::Object ...core::Object ... ...core::Object->core::Object gamnit::AttributeFloat AttributeFloat gamnit::AttributeFloat->gamnit::Attribute gamnit::AttributeVec2 AttributeVec2 gamnit::AttributeVec2->gamnit::Attribute gamnit::AttributeVec3 AttributeVec3 gamnit::AttributeVec3->gamnit::Attribute gamnit::AttributeVec4 AttributeVec4 gamnit::AttributeVec4->gamnit::Attribute gamnit::InactiveAttribute InactiveAttribute gamnit::InactiveAttribute->gamnit::AttributeFloat gamnit::InactiveAttribute->gamnit::AttributeVec2 gamnit::InactiveAttribute->gamnit::AttributeVec3 gamnit::InactiveAttribute->gamnit::AttributeVec4 gamnit::InactiveAttribute... ... gamnit::InactiveAttribute...->gamnit::InactiveAttribute

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

class ShaderVariable

gamnit :: ShaderVariable

Uniform or Attribute of a GamnitProgram

Children

class AttributeFloat

gamnit :: AttributeFloat

Shader attribute of GLSL type float
class AttributeVec2

gamnit :: AttributeVec2

Shader attribute of GLSL type vec2
class AttributeVec3

gamnit :: AttributeVec3

Shader attribute of GLSL type vec3
class AttributeVec4

gamnit :: AttributeVec4

Shader attribute of GLSL type vec4

Descendants

class InactiveAttribute

gamnit :: InactiveAttribute

Attribute that does not exist or that has been optimized out

Class definitions

gamnit $ Attribute
# Shader attribute
#
# It will use either the `uniform` value or the data at `array_pointer` if
# and only if `array_enabled`.
class Attribute
	super ShaderVariable

	private var array_enabled_cache = false

	# Is the array attribute enabled?
	fun array_enabled: Bool do return array_enabled_cache

	# Set whether to use the data at `array_pointer` over `uniform`.
	fun array_enabled=(value: Bool)
	do
		if not is_active then return

		glUseProgram program

		self.array_enabled_cache = value
		if value then
			glEnableVertexAttribArray location
		else glDisableVertexAttribArray location
	end

	# Define the `array` of vertex data
	fun array(array: Array[Float], data_per_vertex: Int)
	do
		# TODO move this and native_float_array to a subclass specific to float

		if not is_active then return

		var native = native_float_array
		if native == null or array.length > native.length then
			if native != null then native.finalize
			native = new GLfloatArray.from(array)
			self.native_float_array = native
		else
			native.fill_from(array)
		end

		glVertexAttribPointer(location, data_per_vertex, gl_FLOAT, false, 0, native.native_array)
	end

	private var native_float_array: nullable GLfloatArray = null
end
lib/gamnit/programs.nit:62,1--107,3