SDL_GPUVERTEXELEMENTFORMAT(3type)

πŸ’… NAME πŸ’…

SDL_GPUVertexElementFormat β€” bestie, it literally tells you what format a vertex attribute is in. That's the whole job. Iconic, honestly.

This page lives in the SDL3 DATATYPES section of the manual, and the page itself is named SDL_GPUVert...ementFormat (yes the title gets truncated like that, that's just how man pages do, don't worry about it 🫢).


🌸 SYNOPSIS 🌸

#include <SDL3/SDL_gpu.h>

typedef enum SDL_GPUVertexElementFormat
{
    SDL_GPU_VERTEXELEMENTFORMAT_INVALID,

    /* 32-bit Signed Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_INT,
    SDL_GPU_VERTEXELEMENTFORMAT_INT2,
    SDL_GPU_VERTEXELEMENTFORMAT_INT3,
    SDL_GPU_VERTEXELEMENTFORMAT_INT4,

    /* 32-bit Unsigned Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_UINT,
    SDL_GPU_VERTEXELEMENTFORMAT_UINT2,
    SDL_GPU_VERTEXELEMENTFORMAT_UINT3,
    SDL_GPU_VERTEXELEMENTFORMAT_UINT4,

    /* 32-bit Floats */
    SDL_GPU_VERTEXELEMENTFORMAT_FLOAT,
    SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2,
    SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3,
    SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4,

    /* 8-bit Signed Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_BYTE2,
    SDL_GPU_VERTEXELEMENTFORMAT_BYTE4,

    /* 8-bit Unsigned Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2,
    SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4,

    /* 8-bit Signed Normalized */
    SDL_GPU_VERTEXELEMENTFORMAT_BYTE2_NORM,
    SDL_GPU_VERTEXELEMENTFORMAT_BYTE4_NORM,

    /* 8-bit Unsigned Normalized */
    SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2_NORM,
    SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4_NORM,

    /* 16-bit Signed Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_SHORT2,
    SDL_GPU_VERTEXELEMENTFORMAT_SHORT4,

    /* 16-bit Unsigned Integers */
    SDL_GPU_VERTEXELEMENTFORMAT_USHORT2,
    SDL_GPU_VERTEXELEMENTFORMAT_USHORT4,

    /* 16-bit Signed Normalized */
    SDL_GPU_VERTEXELEMENTFORMAT_SHORT2_NORM,
    SDL_GPU_VERTEXELEMENTFORMAT_SHORT4_NORM,

    /* 16-bit Unsigned Normalized */
    SDL_GPU_VERTEXELEMENTFORMAT_USHORT2_NORM,
    SDL_GPU_VERTEXELEMENTFORMAT_USHORT4_NORM,

    /* 16-bit Floats */
    SDL_GPU_VERTEXELEMENTFORMAT_HALF2,
    SDL_GPU_VERTEXELEMENTFORMAT_HALF4
} SDL_GPUVertexElementFormat;

πŸ‘‘ DESCRIPTION πŸ‘‘

Okay so. Picture this: you're building a GPU graphics pipeline and you gotta tell it how the bytes in your vertex buffer are actually laid out. That's literally this enum. It's the menu of every format a vertex attribute can be in. πŸ’…

The number at the end of each name (2, 3, 4) is how many components are in it β€” the ones with no number are just a single component, periodt. So like FLOAT2 is two floats, FLOAT3 is three, etc. The prefix tells you the type (INT, UINT, FLOAT, BYTE, UBYTE, SHORT, USHORT, HALF), and _NORM means it's the normalized version of that type. And yes, SDL_GPU_VERTEXELEMENTFORMAT_INVALID is sitting up there at the top being the "nope, not a real format" one πŸ™ˆ.

The categories, in the order they appear:

  • 32-bit Signed Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_INT, SDL_GPU_VERTEXELEMENTFORMAT_INT2, SDL_GPU_VERTEXELEMENTFORMAT_INT3, SDL_GPU_VERTEXELEMENTFORMAT_INT4
  • 32-bit Unsigned Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_UINT, SDL_GPU_VERTEXELEMENTFORMAT_UINT2, SDL_GPU_VERTEXELEMENTFORMAT_UINT3, SDL_GPU_VERTEXELEMENTFORMAT_UINT4
  • 32-bit Floats β€” SDL_GPU_VERTEXELEMENTFORMAT_FLOAT, SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2, SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3, SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4
  • 8-bit Signed Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_BYTE2, SDL_GPU_VERTEXELEMENTFORMAT_BYTE4
  • 8-bit Unsigned Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2, SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4
  • 8-bit Signed Normalized β€” SDL_GPU_VERTEXELEMENTFORMAT_BYTE2_NORM, SDL_GPU_VERTEXELEMENTFORMAT_BYTE4_NORM
  • 8-bit Unsigned Normalized β€” SDL_GPU_VERTEXELEMENTFORMAT_UBYTE2_NORM, SDL_GPU_VERTEXELEMENTFORMAT_UBYTE4_NORM
  • 16-bit Signed Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_SHORT2, SDL_GPU_VERTEXELEMENTFORMAT_SHORT4
  • 16-bit Unsigned Integers β€” SDL_GPU_VERTEXELEMENTFORMAT_USHORT2, SDL_GPU_VERTEXELEMENTFORMAT_USHORT4
  • 16-bit Signed Normalized β€” SDL_GPU_VERTEXELEMENTFORMAT_SHORT2_NORM, SDL_GPU_VERTEXELEMENTFORMAT_SHORT4_NORM
  • 16-bit Unsigned Normalized β€” SDL_GPU_VERTEXELEMENTFORMAT_USHORT2_NORM, SDL_GPU_VERTEXELEMENTFORMAT_USHORT4_NORM
  • 16-bit Floats β€” SDL_GPU_VERTEXELEMENTFORMAT_HALF2, SDL_GPU_VERTEXELEMENTFORMAT_HALF4
ngl bestie, notice that the 8-bit and 16-bit groups only come in 2 and 4 component flavors β€” there's no BYTE3 or SHORT3 in here. The 32-bit ones get the full 1, 2, 3, 4 treatment. That's just how it is. πŸ’€

πŸ¦‹ AVAILABILITY πŸ¦‹

This enum has been around since SDL 3.2.0. So if your SDL is older than that, this whole page is giving nothing and you gotta upgrade, fr fr.


πŸ’– SEE ALSO πŸ’–


okay that's the whole page, you ate that πŸŽ€βœ¨

This one's from Simple Directmedia Layer, version SDL 3.4.18 β€” go forth and format your vertices, bestie, you're the main character of this pipeline now πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from