diff options
author | chai <chaifix@163.com> | 2019-12-08 00:23:50 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-12-08 00:23:50 +0800 |
commit | 3df29dc54c509c983dc8a0e23eab4160d48144f2 (patch) | |
tree | d8c5287c9979e731e373e7a1481aadd79d3f071b /src/example | |
parent | 8e684dc0c76708e3174f005aebcaabc144b85500 (diff) |
+clipping
Diffstat (limited to 'src/example')
-rw-r--r-- | src/example/example.h | 2 | ||||
-rw-r--r-- | src/example/example_cube.c | 73 | ||||
-rw-r--r-- | src/example/example_dot.c | 36 | ||||
-rw-r--r-- | src/example/example_texture.c | 88 |
4 files changed, 2 insertions, 197 deletions
diff --git a/src/example/example.h b/src/example/example.h index 7879257..15b547e 100644 --- a/src/example/example.h +++ b/src/example/example.h @@ -13,6 +13,8 @@ extern void ondraw##i(void*); #define EXAMPLECUR texture +/*All examples*/ + EXAMPLE(cube); EXAMPLE(line); EXAMPLE(dot); diff --git a/src/example/example_cube.c b/src/example/example_cube.c deleted file mode 100644 index caedd64..0000000 --- a/src/example/example_cube.c +++ /dev/null @@ -1,73 +0,0 @@ -#include "example.h" - -/*Õý·½Ìå*/ -Vec3 verts[] = { - // front face - {1, 1, 1}, {-1, 1, 1}, {-1, -1, 1}, {1, -1, 1}, - // back face - {1, 1, -1}, {-1, 1, -1}, {-1, -1, -1}, {1, -1, -1}, -}; - -Color colors[] = { - 0xffff0000, 0xff00ff00, 0xffff00ff, 0xff00ffff, - 0xff0000ff, 0xff000000, 0xffffff00, 0xffffffff, -}; - -int cube[] = { - 0, 2, 1, 0, 3, 2, - 1, 2, 5, 2, 6, 5, - 4, 5, 6, 4, 6, 7, - 0, 4, 7, 0, 7, 3, - 0, 1, 4, 1, 5, 4, - 2, 3, 6, 3, 7, 6 -}; -Mat4 m; -void onloadcube(void* data) { -} - -void oneventcube(void* data) { - SDL_Event* e = (SDL_Event*)data; -} - -float _t = 0; - -void onupdatecube(void*data) { - uint dt = *(uint*)data; - ssr_matrixmode(MATRIX_MODEL); - ssr_loadidentity(); - ssr_translate(0, 0, -3); - ssr_rotate(360 * sin(_t += 0.001f), 1, 1, 1); - ssr_matrixmode(MATRIX_PROJECTION); - ssr_loadidentity(); - ssr_perspective(100 + 20 * sin(_t * 10), 1.25f, -0.1f, -100); - ssr_matrixmode(MATRIX_VIEW); - ssr_loadidentity(); - Vec3 pos = { 0,0,0 }, target = { 0,0,-1 }, up = { 0,1,0 }; - ssr_lookat(&pos, &target, &up); - ssr_getmvp(&m); -} - -void ondrawcube(void*data) { - ssr_clearcolor(0); - Vec2 proj[8]; - - for (int i = 0; i < 8; ++i) { - Vec4 v = { verts[i].x, verts[i].y ,verts[i].z ,1 }, temp; - mat4_applytovec4(&m, &v, &temp); - temp.x /= temp.w; - temp.y /= temp.w; - temp.z /= temp.w; - //vec4_print(&temp); - proj[i].x = temp.x; - proj[i].y = temp.y; - } - for (int j = 1; j < sizeof(cube) / sizeof(int); ++j) { - int fromx = proj[cube[j]].x * 250.f + 250, fromy = 200 - proj[cube[j]].y * 200.f; - int tox = proj[cube[j - 1]].x * 250.f + 250, toy = 200 - proj[cube[j - 1]].y * 200.f; - ssrR_putline(fromx, fromy , tox, toy, 0xffff0000); - } - - Vec2 v1 = { 0, 0 }, v2 = { 3, 1 }, v3 = {1, 5}; - float area = ssrR_area(&v1, &v2, &v3); - printf("%f\n", area); -} diff --git a/src/example/example_dot.c b/src/example/example_dot.c deleted file mode 100644 index 0a88084..0000000 --- a/src/example/example_dot.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "example.h" -#include "../core/rasterizer.h" - -Vec3 pos = { 0, 0, 2 }, target = { 0,0,-1 }, up = { 0, 1, 0 }; - -float dot[] = { 0, 0, -2 }; - -void onloaddot(void* data) { - -} - -void oneventdot(void* data) { - SDL_Event* e = (SDL_Event*)data; -} - -void onupdatedot(void*data) { - uint dt = *(uint*)data; - ssr_matrixmode(MATRIX_VIEW); - ssr_lookat(&pos, &target, &up); - ssr_matrixmode(MATRIX_PROJECTION); -} - -float j = 0; - -void ondrawdot(void*data) { - ssr_clearcolor(0xffffffff); - - //for (int i = -50; i < 200; ++i) { - // ssr_putpoint(i * sin(j += 0.1f), 300 * cos(j), ssr_color(0xff, 0, 0xff, 0)); - //} - - ssrR_putline(-100, 0, 100, 200, 0xffff0000); - -// printf("%u\n", (UINT_MAX * (double)0.5F)); - -} diff --git a/src/example/example_texture.c b/src/example/example_texture.c deleted file mode 100644 index db2868b..0000000 --- a/src/example/example_texture.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "example.h" - -Vert** quad; -static Vec3 verts[] = { - // front face - {1, 1, 1}, {-1, 1, 1}, {-1, -1, 1}, {1, -1, 1}, - // back face - {1, 1, -1}, {-1, 1, -1}, {-1, -1, -1}, {1, -1, -1}, -}; -static Color colors[] = { - 0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff00ff, - 0xffaa28aa, 0xffFFC58E, 0xffA100FF, 0xffFAFF00, -}; - -int face[] = { - 0, 1, 2, 0, 2, 3, - 1, 5, 2, 2, 5, 6, - 4, 6, 5, 4, 7, 6, - 0, 3, 7, 0, 7, 4, - 0, 4, 1, 1, 4, 5, - 2, 6, 3, 3, 6, 7 -}; - -void vert(UniformCollection* uniforms, VertexShaderIn* in, Vec4* homocoord) { - static Vec4 p; p.xyz = *in->vertex->position; p.w = 1; - mat4_applytovec4(uniforms->mvp, &p, homocoord); -} -bool frag(UniformCollection* uniforms, FragmentShaderIn* in, Color* color) { - ssrS_bcpcolor(in->bc, in->A->color, in->B->color, in->C->color, color); - return 1; -} -Program program = { vert, frag }; - -void onloadtexture(void* data) { - ssr_matrixmode(MATRIX_PROJECTION); - ssr_loadidentity(); - ssr_perspective(90, 1.25f, 0.1f, 10); - //ssr_ortho(-5, 5, -4, 4, 0.1, 10); - ssr_matrixmode(MATRIX_VIEW); - ssr_loadidentity(); - Vec3 p = { 0, 0, 0 }, target = { 0, 0, -1 }; - ssr_lookat(&p, &target, &vec3up); - - quad = ssrM_newvector(Vert*, 8); - quad[0] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[1] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[2] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[3] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[4] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[5] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[6] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[7] = vert_new(VERTMASK_POSITION | VERTMASK_COLOR); - quad[0]->index = 0; *quad[0]->position = verts[0]; quad[0]->color = colors[0]; - quad[1]->index = 1; *quad[1]->position = verts[1]; quad[1]->color = colors[1]; - quad[2]->index = 2; *quad[2]->position = verts[2]; quad[2]->color = colors[2]; - quad[3]->index = 3; *quad[3]->position = verts[3]; quad[3]->color = colors[3]; - quad[4]->index = 4; *quad[4]->position = verts[4]; quad[4]->color = colors[4]; - quad[5]->index = 5; *quad[5]->position = verts[5]; quad[5]->color = colors[5]; - quad[6]->index = 6; *quad[6]->position = verts[6]; quad[6]->color = colors[6]; - quad[7]->index = 7; *quad[7]->position = verts[7]; quad[7]->color = colors[7]; - - ssr_bindvertices(quad, 8, face, 12); - - ssr_useprogram(&program); - ssr_enable(ENABLEMASK_BACKFACECULL); - ssr_enable(ENABLEMASK_DEPTHTEST); -} - -void oneventtexture(void* data) { - SDL_Event* e = (SDL_Event*)data; -} - -static float _t = 0; - -void onupdatetexture(void*data) { - uint dt = *(uint*)data; - ssr_matrixmode(MATRIX_MODEL); - ssr_loadidentity(); - ssr_translate(0, 0, -3); - ssr_rotate(_t -= dt / 50.f, 1, 1, 1); -} - -void ondrawtexture(void*data) { - ssr_clearcolor(0x00); - ssr_cleardepth(); - - ssr_draw(PRIMITIVE_TRIANGLE); -} |