From 134f27f520805f08942c967ea24e1937354b119d Mon Sep 17 00:00:00 2001 From: Lectem Date: Tue, 24 Mar 2015 00:11:52 +0100 Subject: [PATCH] last bit of modif --- .../graphics/hello_triangle/data/shader.vsh | 2 +- .../graphics/hello_triangle/source/main.c | 37 ++++++++++++------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/examples/graphics/hello_triangle/data/shader.vsh b/examples/graphics/hello_triangle/data/shader.vsh index d86c35a..57a694c 100644 --- a/examples/graphics/hello_triangle/data/shader.vsh +++ b/examples/graphics/hello_triangle/data/shader.vsh @@ -26,7 +26,7 @@ dp4 outpos.z, projection[2], r0 dp4 outpos.w, projection[3], r0 - ; Set vertex color to white + ; Set vertex color to white rgba => (1.0,1.0,1.0,1.0) mov outclr, ones end .end \ No newline at end of file diff --git a/examples/graphics/hello_triangle/source/main.c b/examples/graphics/hello_triangle/source/main.c index 872a5de..551048e 100644 --- a/examples/graphics/hello_triangle/source/main.c +++ b/examples/graphics/hello_triangle/source/main.c @@ -1,3 +1,14 @@ +/** +* Hello Triangle example, made by Lectem +* +* Draws a white triangle using the 3DS GPU. +* This example should give you enough hints and links on how to use the GPU for basic non-textured rendering. +* Another version of this example will be made with colors. +* +* Thanks to smea, fincs, neobrain, xerpi and all those who helped me understand how the 3DS GPU works +*/ + + #include <3ds.h> #include #include @@ -133,10 +144,10 @@ void gpuUIEndFrame() GPUCMD_FlushAndRun(NULL); gspWaitForP3D();//Wait for the gpu 3d processing to be done //Copy the GPU output buffer to the screen framebuffer - //See http://3dbrew.org/wiki/GPU#Transfer_Engine for more details about the transfer engine + //See http://3dbrew.org/wiki/GPU#Transfer_Engine for more details about the transfer engine GX_SetDisplayTransfer(NULL, gpuFBuffer, 0x019001E0, (u32*)gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), 0x019001E0, 0x01001000); gspWaitForPPF(); - + //Clear the screen GX_SetMemoryFill(NULL, gpuFBuffer, clearColor, &gpuFBuffer[0x2EE00], 0x201, gpuDBuffer, 0x00000000, &gpuDBuffer[0x2EE00], 0x201); @@ -152,10 +163,10 @@ void gpuUIEndFrame() //Viewport (http://3dbrew.org/wiki/GPU_Commands#Command_0x0041) GPU_SetViewport((u32 *)osConvertVirtToPhys((u32)gpuDBuffer), (u32 *)osConvertVirtToPhys((u32)gpuFBuffer), - 0, 0, - //Our screen is 400*240, but the GPU actually renders to 400*480 and then downscales it SetDisplayTransfer bit 24 is set - //This is the case here (See http://3dbrew.org/wiki/GPU#0x1EF00C10 for more details) - 240*2, 400); + 0, 0, + //Our screen is 400*240, but the GPU actually renders to 400*480 and then downscales it SetDisplayTransfer bit 24 is set + //This is the case here (See http://3dbrew.org/wiki/GPU#0x1EF00C10 for more details) + 240*2, 400); GPU_DepthMap(-1.0f, 0.0f); //Be careful, standard OpenGL clipping is [-1;1], but it is [-1;0] on the pica200 @@ -183,11 +194,11 @@ void gpuUIEndFrame() //Our data static const vector_3f triangle_mesh[] = - { - {240.0f+60.0f, 120.0f, 0.5f}, - {240.0f-60.0f, 120.0f+60.0f, 0.5f}, - {240.0f-60.0f, 120.0f-60.0f, 0.5f} - }; + { + {240.0f+60.0f, 120.0f, 0.5f}, + {240.0f-60.0f, 120.0f+60.0f, 0.5f}, + {240.0f-60.0f, 120.0f-60.0f, 0.5f} + }; static void* triangle_data = NULL; @@ -222,7 +233,7 @@ int main(int argc, char** argv) (u32[]) {0x0}, // buffer offsets (placeholders) (u64[]) {0x0}, // attribute permutations for each buffer (identity again) (u8[]) {1} // number of attributes for each buffer - ); + ); //Display the buffers data GPU_DrawArray(GPU_TRIANGLES, sizeof(triangle_mesh) / sizeof(triangle_mesh[0])); @@ -237,7 +248,7 @@ int main(int argc, char** argv) aptExit(); srvExit(); - return 0; + return 0; }