vertex_format_add_custom(type, usage);
Argument | Description |
---|---|
type | The data type that this custom vertex data will hold (see the type constants listed below). |
usage | The use that the data will get(see the usage constants listed below). |
Returns: N/A
Tell GameMaker: Studio to accept a custom value (or values) as part of the new vertex format being created. The available values to use are defined by the
data type constant that you choose, listed below:
Constant | Description |
---|---|
vertex_type_float1 | A single floating point value |
vertex_type_float2 | Two floating point values |
vertex_type_float3 | Three floating point values |
vertex_type_float4 | Four floating point values |
vertex_type_colour | Four component values (r, g, b, a) |
vertex_type_ubyte4 | Four component unsigned byte values (from 0 to 255) |
The use that these constants will be put too also needs to be defined so that the values can be "bound" properly within the shader being created. This is necessary
due to the fact that DX and OpenGL have different requirements so if you don't bind them properly, they won't come through right in the shader. The available
usage constants that you can choose are listed below and those you use will depend on the specifics of the shader being created:
Constant | Description |
---|---|
vertex_usage_position | position values (x, y, z) |
vertex_usage_colour | colour values (r, g, b, a) |
vertex_usage_normal | vertex normal values (nx, ny, nz) |
vertex_usage_textcoord | UV coordinates (u, v) |
vertex_usage_blendweight | the blendweight of the input matrix (for skeletal animation, for example) |
vertex_usage_blendindices | the indices of the matrices to use (for skeletal animation, for example) |
vertex_usage_depth | vertex depth buffer value |
vertex_usage_tangent | tangent values |
vertex_usage_binormal | binormal values |
vertex_usage_fog | fog values |
vertex_usage_sample | sampler index |
vertex_format_begin();
vertex_format_add_textcoord();
vertex_format_add_custom(vertex_type_float3, vertex_usage_position);
my_format = vertex_format_end();
The above code will create a new vertex format with just texture and 3 custom floating point values for position. It is then stores the format id in the variable "my_format".