From 11a5001f3321ce0deb62d79abfb62ac2ab54763a Mon Sep 17 00:00:00 2001 From: fincs Date: Sat, 5 Sep 2015 18:02:06 +0200 Subject: [PATCH] Correct GPU_DrawArray() parameter order, fix GPU examples --- examples/graphics/gpu/geoshader/source/main.c | 2 +- examples/graphics/gpu/simple_tri/source/main.c | 2 +- examples/graphics/gpu/textured_cube/source/main.c | 2 +- libctru/include/3ds/gpu/gpu.h | 2 +- libctru/source/gpu/gpu.c | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/graphics/gpu/geoshader/source/main.c b/examples/graphics/gpu/geoshader/source/main.c index a2c9998..b49db2f 100644 --- a/examples/graphics/gpu/geoshader/source/main.c +++ b/examples/graphics/gpu/geoshader/source/main.c @@ -83,7 +83,7 @@ static void sceneRender(void) GPU_SetFloatUniformMatrix(GPU_GEOMETRY_SHADER, uLoc_projection, &projection); // Draw the VBO - GPU_UNKPRIM allows the geoshader to control primitive emission - GPU_DrawArray(GPU_UNKPRIM, vertex_list_count); + GPU_DrawArray(GPU_UNKPRIM, 0, vertex_list_count); } static void sceneExit(void) diff --git a/examples/graphics/gpu/simple_tri/source/main.c b/examples/graphics/gpu/simple_tri/source/main.c index d82cc12..656fb70 100644 --- a/examples/graphics/gpu/simple_tri/source/main.c +++ b/examples/graphics/gpu/simple_tri/source/main.c @@ -76,7 +76,7 @@ static void sceneRender(void) GPU_SetFloatUniformMatrix(GPU_VERTEX_SHADER, uLoc_projection, &projection); // Draw the VBO - GPU_DrawArray(GPU_TRIANGLES, vertex_list_count); + GPU_DrawArray(GPU_TRIANGLES, 0, vertex_list_count); } static void sceneExit(void) diff --git a/examples/graphics/gpu/textured_cube/source/main.c b/examples/graphics/gpu/textured_cube/source/main.c index d8274b7..f4e13a1 100644 --- a/examples/graphics/gpu/textured_cube/source/main.c +++ b/examples/graphics/gpu/textured_cube/source/main.c @@ -186,7 +186,7 @@ static void sceneRender(void) GPU_SetFloatUniform(GPU_VERTEX_SHADER, uLoc_lightClr, (u32*)(float[]){1.0f, 1.0f, 1.0f, 1.0f}, 1); // Draw the VBO - GPU_DrawArray(GPU_TRIANGLES, vertex_list_count); + GPU_DrawArray(GPU_TRIANGLES, 0, vertex_list_count); } static void sceneExit(void) diff --git a/libctru/include/3ds/gpu/gpu.h b/libctru/include/3ds/gpu/gpu.h index e2b3ac3..5a48103 100644 --- a/libctru/include/3ds/gpu/gpu.h +++ b/libctru/include/3ds/gpu/gpu.h @@ -294,7 +294,7 @@ void GPU_SetTexture(GPU_TEXUNIT unit, u32* data, u16 width, u16 height, u32 para void GPU_SetTextureBorderColor(GPU_TEXUNIT unit,u32 borderColor); void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 alphaOperands, GPU_COMBINEFUNC rgbCombine, GPU_COMBINEFUNC alphaCombine, u32 constantColor); -void GPU_DrawArray(GPU_Primitive_t primitive, u32 n, u32 first); +void GPU_DrawArray(GPU_Primitive_t primitive, u32 first, u32 count); void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n); void GPU_FinishDrawing(); diff --git a/libctru/source/gpu/gpu.c b/libctru/source/gpu/gpu.c index 7483294..0429444 100644 --- a/libctru/source/gpu/gpu.c +++ b/libctru/source/gpu/gpu.c @@ -485,7 +485,7 @@ void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 GPUCMD_AddIncrementalWrites(GPUREG_0000|GPU_TEVID[id], param, 0x00000005); } -void GPU_DrawArray(GPU_Primitive_t primitive, u32 n, u32 first) +void GPU_DrawArray(GPU_Primitive_t primitive, u32 first, u32 count) { //set primitive type GPUCMD_AddMaskedWrite(GPUREG_PRIMITIVE_CONFIG, 0x2, primitive); @@ -493,7 +493,7 @@ void GPU_DrawArray(GPU_Primitive_t primitive, u32 n, u32 first) //index buffer address register should be cleared (except bit 31) before drawing GPUCMD_AddWrite(GPUREG_INDEXBUFFER_CONFIG, 0x80000000); //pass number of vertices - GPUCMD_AddWrite(GPUREG_NUMVERTICES, n); + GPUCMD_AddWrite(GPUREG_NUMVERTICES, count); //set first vertex GPUCMD_AddWrite(GPUREG_DRAW_VERTEX_OFFSET, first);