libctru/libctru/include/3ds/gpu/shaderProgram.h
2015-01-02 19:39:37 -08:00

40 lines
1.1 KiB
C

#pragma once
#include <3ds/types.h>
#include <3ds/gpu/shbin.h>
typedef struct
{
u32 id;
u32 data[3];
}float24Uniform_s;
// this structure describes an instance of either a vertex or geometry shader
typedef struct
{
DVLE_s* dvle;
u16 boolUniforms;
u32 intUniforms[4];
float24Uniform_s* float24Uniforms;
u8 numFloat24Uniforms;
}shaderInstance_s;
// this structure describes an instance of a full shader program
typedef struct
{
shaderInstance_s* vertexShader;
shaderInstance_s* geometryShader;
u8 geometryShaderInputStride;
}shaderProgram_s;
Result shaderInstanceInit(shaderInstance_s* si, DVLE_s* dvle);
Result shaderInstanceFree(shaderInstance_s* si);
Result shaderInstanceSetBool(shaderInstance_s* si, int id, bool value);
Result shaderInstanceGetBool(shaderInstance_s* si, int id, bool* value);
Result shaderProgramInit(shaderProgram_s* sp);
Result shaderProgramFree(shaderProgram_s* sp);
Result shaderProgramSetVsh(shaderProgram_s* sp, DVLE_s* dvle);
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle, u8 stride);
Result shaderProgramUse(shaderProgram_s* sp);