GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ALLEGRO_PRIM_ATTR(3) ALLEGRO_PRIM_ATTR(3)

ALLEGRO_PRIM_ATTR - Allegro 5 API


#include <allegro5/allegro_primitives.h>
typedef enum ALLEGRO_PRIM_ATTR

    

Enumerates the types of vertex attributes that a custom vertex may have.
ALLEGRO_PRIM_POSITION - Position information, can be stored only in ALLEGRO_PRIM_SHORT_2, ALLEGRO_PRIM_FLOAT_2 and ALLEGRO_PRIM_FLOAT_3.
ALLEGRO_PRIM_COLOR_ATTR - Color information, stored in an ALLEGRO_COLOR(3). The storage field of ALLEGRO_VERTEX_ELEMENT is ignored
ALLEGRO_PRIM_TEX_COORD - Texture coordinate information, can be stored only in ALLEGRO_PRIM_FLOAT_2 and ALLEGRO_PRIM_SHORT_2. These coordinates are normalized by the width and height of the texture, meaning that the bottom-right corner has texture coordinates of (1, 1).
ALLEGRO_PRIM_TEX_COORD_PIXEL - Texture coordinate information, can be stored only in ALLEGRO_PRIM_FLOAT_2 and ALLEGRO_PRIM_SHORT_2. These coordinates are measured in pixels.
ALLEGRO_PRIM_USER_ATTR - A user specified attribute. You can use any storage for this attribute. You may have at most ALLEGRO_PRIM_MAX_USER_ATTR (currently 10) of these that you can specify by adding an index to the value of ALLEGRO_PRIM_USER_ATTR, e.g. the first user attribute is ALLEGRO_PRIM_USER_ATTR + 0, the second is ALLEGRO_PRIM_USER_ATTR + 1 and so on.

To access these custom attributes from GLSL shaders you need to declare attributes that follow this nomenclature: al_user_attr_# where # is the index of the attribute.

For example to have a position and a normal vector for each vertex you could declare it like this:


ALLEGRO_VERTEX_ELEMENT elements[3] = {
    {ALLEGRO_PRIM_POSITION, ALLEGRO_PRIM_FLOAT_3, 0},
    {ALLEGRO_PRIM_USER_ATTR + 0, ALLEGRO_PRIM_FLOAT_3, 12},
    {0, 0, 0}};

    

And then in your vertex shader access it like this:


attribute vec3 al_pos; // ALLEGRO_PRIM_POSITION
attribute vec3 al_user_attr_0; // ALLEGRO_PRIM_USER_ATTR + 0
varying float light;
const vec3 light_direction = vec3(0, 0, 1);
void main() {
    light = dot(al_user_attr_0, light_direction);
    gl_Position = al_pos;
}

    

To access these custom attributes from HLSL you need to declare a parameter with the following semantics: TEXCOORD{# + 2} where # is the index of the attribute. E.g. the first attribute can be accessed via TEXCOORD2, second via TEXCOORD3 and so on.

Since: 5.1.6

ALLEGRO_VERTEX_DECL(3), ALLEGRO_PRIM_STORAGE(3), al_attach_shader_source(3)
Allegro reference manual

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.