Simply uniform set code in example

This commit is contained in:
fincs 2015-09-09 17:21:40 +02:00
parent 60df9ed7d6
commit f7d344843e
2 changed files with 14 additions and 6 deletions

View File

@ -161,12 +161,12 @@ static void sceneRender(void)
angleY += M_PI / 360; angleY += M_PI / 360;
// Update the uniforms // Update the uniforms
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_projection, 4), &projection, sizeof(C3D_Mtx)); C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_projection, &projection);
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_modelView, 4), &modelView, sizeof(C3D_Mtx)); C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_modelView, &modelView);
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_material, 4), &material, sizeof(C3D_Mtx)); C3D_FVUnifMtx(GPU_VERTEX_SHADER, uLoc_material, &material);
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightVec, 1), (float[]){0.0f, -1.0f, 0.0f, 0.0f}, sizeof(C3D_FVec)); C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightVec, 0.0f, 0.0f, -1.0f, 0.0f);
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightHalfVec, 1), (float[]){0.0f, -1.0f, 0.0f, 0.0f}, sizeof(C3D_FVec)); C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightHalfVec, 0.0f, 0.0f, -1.0f, 0.0f);
memcpy(C3D_FVUnifWritePtr(GPU_VERTEX_SHADER, uLoc_lightClr, 1), (float[]){1.0f, 1.0f, 1.0f, 1.0f}, sizeof(C3D_FVec)); C3D_FVUnifSet(GPU_VERTEX_SHADER, uLoc_lightClr, 1.0f, 1.0f, 1.0f, 1.0f);
// Draw the VBO // Draw the VBO
C3D_DrawArrays(GPU_TRIANGLES, 0, vertex_list_count); C3D_DrawArrays(GPU_TRIANGLES, 0, vertex_list_count);

View File

@ -25,6 +25,14 @@ static inline C3D_IVec* C3D_IVUnifWritePtr(GPU_SHADER_TYPE type, int id)
return &C3D_IVUnif[type][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) 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); C3D_FVec* ptr = C3D_FVUnifWritePtr(type, id, 1);