From f7d344843e9f4e50fa5b253beb6970c7df2faaf3 Mon Sep 17 00:00:00 2001 From: fincs Date: Wed, 9 Sep 2015 17:21:40 +0200 Subject: [PATCH] Simply uniform set code in example --- examples/textured_cube/source/main.c | 12 ++++++------ include/c3d/uniforms.h | 8 ++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/examples/textured_cube/source/main.c b/examples/textured_cube/source/main.c index a833925..b9e6c75 100644 --- a/examples/textured_cube/source/main.c +++ b/examples/textured_cube/source/main.c @@ -161,12 +161,12 @@ static void sceneRender(void) angleY += M_PI / 360; // Update the uniforms - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_projection, 4), &projection, sizeof(C3D_Mtx)); - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_modelView, 4), &modelView, sizeof(C3D_Mtx)); - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_material, 4), &material, sizeof(C3D_Mtx)); - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightVec, 1), (float[]){0.0f, -1.0f, 0.0f, 0.0f}, sizeof(C3D_FVec)); - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightHalfVec, 1), (float[]){0.0f, -1.0f, 0.0f, 0.0f}, sizeof(C3D_FVec)); - memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightClr, 1), (float[]){1.0f, 1.0f, 1.0f, 1.0f}, sizeof(C3D_FVec)); + C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_projection, &projection); + C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_modelView, &modelView); + C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_material, &material); + C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightVec, 0.0f, 0.0f, -1.0f, 0.0f); + C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightHalfVec, 0.0f, 0.0f, -1.0f, 0.0f); + C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightClr, 1.0f, 1.0f, 1.0f, 1.0f); // Draw the VBO C3D_DrawArrays(GPU_TRIANGLES, 0, vertex_list_count); diff --git a/include/c3d/uniforms.h b/include/c3d/uniforms.h index aa55bc0..1dbd6a6 100644 --- a/include/c3d/uniforms.h +++ b/include/c3d/uniforms.h @@ -25,6 +25,14 @@ static inline C3D_IVec* C3D_IVUnifWritePtr(GPU_SHADER_TYPE type, int id) return &C3D_IVUnif[type][id]; } +static inline void C3D_FVUnifMtx(GPU_SHADER_TYPE type, int id, C3D_Mtx* mtx) +{ + int i; + C3D_FVec* ptr = C3D_FVUnifWritePtr(type, id, 4); + for (i = 0; i < 4; i ++) + ptr[i] = mtx->r[i]; +} + static inline void C3D_FVUnifSet(GPU_SHADER_TYPE type, int id, float x, float y, float z, float w) { C3D_FVec* ptr = C3D_FVUnifWritePtr(type, id, 1);