91 lines
2.5 KiB
Ada
91 lines
2.5 KiB
Ada
with
|
|
GL,
|
|
system.storage_Elements;
|
|
|
|
|
|
package openGL.Attribute
|
|
--
|
|
-- Models an openGL shader attribute.
|
|
--
|
|
is
|
|
type Item is tagged private;
|
|
type View is access all Item'Class;
|
|
type Views is array (Positive range <>) of View;
|
|
|
|
type data_Kind is (GL_BYTE, GL_UNSIGNED_BYTE,
|
|
GL_SHORT, GL_UNSIGNED_SHORT,
|
|
GL_INT, GL_UNSIGNED_INT,
|
|
GL_FLOAT, GL_FIXED);
|
|
---------
|
|
--- Forge
|
|
--
|
|
|
|
procedure define (Self : in out Item);
|
|
procedure destroy (Self : in out Item);
|
|
|
|
package Forge
|
|
is
|
|
use system.storage_Elements;
|
|
|
|
function to_Attribute (Name : in String;
|
|
gl_Location : in gl.GLuint;
|
|
Size : in gl.GLint;
|
|
data_Kind : in Attribute.data_Kind;
|
|
Stride : in Natural;
|
|
Offset : in storage_Offset;
|
|
Normalized : in Boolean) return Item;
|
|
|
|
function new_Attribute (Name : in String;
|
|
gl_Location : in gl.GLuint;
|
|
Size : in gl.GLint;
|
|
data_Kind : in Attribute.data_Kind;
|
|
Stride : in Natural;
|
|
Offset : in storage_Offset;
|
|
Normalized : in Boolean) return View;
|
|
end Forge;
|
|
|
|
|
|
--------------
|
|
--- Attributes
|
|
--
|
|
|
|
function Name (Self : in Item'Class) return String;
|
|
function gl_Location (Self : in Item'Class) return gl.GLuint;
|
|
|
|
|
|
--------------
|
|
--- Operations
|
|
--
|
|
|
|
procedure enable (Self : in Item);
|
|
|
|
|
|
|
|
private
|
|
|
|
type String_view is access String;
|
|
|
|
|
|
type Item is tagged
|
|
record
|
|
Name : String_view;
|
|
Location : gl.GLuint;
|
|
Size : gl.GLint;
|
|
data_Kind : Attribute.data_Kind;
|
|
vertex_Stride : gl.GLint;
|
|
Offset : system.storage_Elements.storage_Offset;
|
|
Normalized : gl.GLboolean;
|
|
end record;
|
|
|
|
|
|
for data_Kind use (GL_BYTE => 16#1400#,
|
|
GL_UNSIGNED_BYTE => 16#1401#,
|
|
GL_SHORT => 16#1402#,
|
|
GL_UNSIGNED_SHORT => 16#1403#,
|
|
GL_INT => 16#1404#,
|
|
GL_UNSIGNED_INT => 16#1405#,
|
|
GL_FLOAT => 16#1406#,
|
|
GL_FIXED => 16#140c#);
|
|
|
|
end openGL.Attribute;
|