Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ALLEGRO_PRIM_ATTR(3)	   Library Functions Manual	  ALLEGRO_PRIM_ATTR(3)

NAME
       ALLEGRO_PRIM_ATTR - Allegro 5 API

SYNOPSIS
	      #include <allegro5/allegro_primitives.h>

	      typedef enum ALLEGRO_PRIM_ATTR

DESCRIPTION
       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 ALLE-
	 GRO_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	 ALLE-
	 GRO_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 AL-
	 LEGRO_PRIM_USER_ATTR +	1 and so on.

	 To access these custom	attributes from	GLSL shaders you need  to  de-
	 clare	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 pa-
	 rameter  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

SEE ALSO
       ALLEGRO_VERTEX_DECL(3),	       ALLEGRO_PRIM_STORAGE(3),		al_at-
       tach_shader_source(3)

Allegro	reference manual				  ALLEGRO_PRIM_ATTR(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ALLEGRO_PRIM_ATTR&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help