Creates a shader to be used when creating a graphics pipeline.
Defined in <SDL3/SDL_gpu.h>
SDL_GPUShader* SDL_CreateGPUShader(
SDL_GPUDevice *device,const SDL_GPUShaderCreateInfo *createinfo);
SDL_GPUDevice * | device | a GPU Context. |
const SDL_GPUShaderCreateInfo * | createinfo | a struct describing the state of the shader to create. |
(SDL_GPUShader *) Returns a shader object on success, or NULL on failure; call SDL_GetError() for more information.
Shader resource bindings must be authored to follow a particular order depending on the shader format.
For SPIR-V shaders, use the following resource sets:
For vertex shaders:
For fragment shaders:
For DXBC and DXIL shaders, use the following register order:
For vertex shaders:
For pixel shaders:
For MSL/metallib, use the following order:
Shader semantics other than system-value semantics do not matter in D3D12 and for ease of use the SDL implementation assumes that non system-value semantics will all be TEXCOORD. If you are using HLSL as the shader source language, your vertex semantics should start at TEXCOORD0 and increment like so: TEXCOORD1, TEXCOORD2, etc. If you wish to change the semantic prefix to something other than TEXCOORD you can use SDL_PROP_GPU_DEVICE_CREATE_D3D12_SEMANTIC_NAME_STRING with SDL_CreateGPUDeviceWithProperties().
This function is available since SDL 3.1.3.