libctru/libctru/include/3ds/gpu/shaderProgram.h

40 lines
1.1 KiB
C
Raw Normal View History

2015-01-03 02:15:44 +01:00
#pragma once
#include <3ds/types.h>
#include <3ds/gpu/shbin.h>
2015-01-03 04:16:23 +01:00
typedef struct
{
u32 id;
u32 data[3];
}float24Uniform_s;
2015-01-03 02:15:44 +01:00
// this structure describes an instance of either a vertex or geometry shader
typedef struct
{
DVLE_s* dvle;
u16 boolUniforms;
2015-01-03 04:16:23 +01:00
u32 intUniforms[4];
float24Uniform_s* float24Uniforms;
u8 numFloat24Uniforms;
2015-01-03 02:15:44 +01:00
}shaderInstance_s;
// this structure describes an instance of a full shader program
typedef struct
{
shaderInstance_s* vertexShader;
shaderInstance_s* geometryShader;
2015-01-03 04:39:37 +01:00
u8 geometryShaderInputStride;
2015-01-03 02:15:44 +01:00
}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);
2015-01-03 04:39:37 +01:00
Result shaderProgramSetGsh(shaderProgram_s* sp, DVLE_s* dvle, u8 stride);
2015-01-03 02:15:44 +01:00
Result shaderProgramUse(shaderProgram_s* sp);