From 94145db9dc5dbc3c65d70a9387ac1dc3e589d9c9 Mon Sep 17 00:00:00 2001 From: milang Date: Sat, 7 Sep 2019 19:57:20 +0200 Subject: [PATCH] add object notion --- include/fxengine/object.h | 29 +++++++++++ include/{fxengine => }/render/bitmap.h | 0 include/{fxengine => }/render/parameters.h | 0 include/{fxengine => }/render/translate.h | 2 +- include/{fxengine => }/render/triangle.h | 4 +- include/{fxengine => }/render/zbuffer.h | 2 +- libfxengine.a | Bin 9112 -> 10346 bytes src/object.c | 54 +++++++++++++++++++++ src/render/bitmap.c | 2 +- src/render/translate.c | 2 +- src/render/triangle.c | 8 +-- src/render/zbuffer.c | 10 ++-- 12 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 include/fxengine/object.h rename include/{fxengine => }/render/bitmap.h (100%) rename include/{fxengine => }/render/parameters.h (100%) rename include/{fxengine => }/render/translate.h (98%) rename include/{fxengine => }/render/triangle.h (94%) rename include/{fxengine => }/render/zbuffer.h (93%) create mode 100644 src/object.c diff --git a/include/fxengine/object.h b/include/fxengine/object.h new file mode 100644 index 0000000..ab1a0bd --- /dev/null +++ b/include/fxengine/object.h @@ -0,0 +1,29 @@ +#ifndef FXE_OBJECT +#define FXE_OBJECT + +#include +#include +#include +#include + + +struct fxe_object +{ + render_triangle * faces; + uint32_t f_size; + bool f_owner; + render_integer_point * points; + uint32_t p_size; + bool p_owner; +}; +typedef struct fxe_object fxe_object; + +void fxe_object_init(fxe_object * object); + +void fxe_object_set_points(fxe_object * object, render_integer_point * points, uint32_t n, bool copy); + +void fxe_object_set_faces(fxe_object * object, render_triangle * faces, uint32_t n, bool copy); + +void fxe_object_delete(fxe_object * object); + +#endif diff --git a/include/fxengine/render/bitmap.h b/include/render/bitmap.h similarity index 100% rename from include/fxengine/render/bitmap.h rename to include/render/bitmap.h diff --git a/include/fxengine/render/parameters.h b/include/render/parameters.h similarity index 100% rename from include/fxengine/render/parameters.h rename to include/render/parameters.h diff --git a/include/fxengine/render/translate.h b/include/render/translate.h similarity index 98% rename from include/fxengine/render/translate.h rename to include/render/translate.h index 3533e1b..9db18d0 100644 --- a/include/fxengine/render/translate.h +++ b/include/render/translate.h @@ -2,7 +2,7 @@ #define RENDER_TRANSLATE_H #include -#include +#include /** * @brief this struct is a point in 3d, which has coords save as uint32_t diff --git a/include/fxengine/render/triangle.h b/include/render/triangle.h similarity index 94% rename from include/fxengine/render/triangle.h rename to include/render/triangle.h index 42ae493..6d68446 100644 --- a/include/fxengine/render/triangle.h +++ b/include/render/triangle.h @@ -1,8 +1,8 @@ #ifndef RENDER_TRIANGLE_H #define RENDER_TRIANGLE_H -#include -#include +#include +#include #include /** diff --git a/include/fxengine/render/zbuffer.h b/include/render/zbuffer.h similarity index 93% rename from include/fxengine/render/zbuffer.h rename to include/render/zbuffer.h index 34beee6..912223c 100644 --- a/include/fxengine/render/zbuffer.h +++ b/include/render/zbuffer.h @@ -1,7 +1,7 @@ #ifndef RENDER_ZBUFFER #define RENDER_ZBUFFER -#include +#include #include /** FE_zbuffer_clear diff --git a/libfxengine.a b/libfxengine.a index 9cdf5ce914636ef6fd85d5bcf57cef11ad890c76..ed83f25bd21e4242324b07f4fe5c4e00822dd25c 100644 GIT binary patch delta 1137 zcmah|T}V@L6hHUwUiWd8Hl1@@p?6c~aN_)!y2RjO4@m_ZS#QC;bDM2Czt|oU#0`W9 zAr$`>J_H3tk5LTFM#qQ zmkkaCyZZ)2u}h>uKf;@gZF3*fj#G@HGIi1Wvr6V2B$g?xa=}h{BI}(e@U=$7aEW7ZrX3e@M{Mb^W zIg66c)hfL%W!RjnTPeqQ55mh8r-^juaS=Bd?N1U12A)?7c9g?HX_!~1GBlKj}(Zp|{ zc7-U-ZkG8&woNwj!BJZ--GQk=7wGF>bNZOBe1~(M)6@SrGc1vZ>@=xuYPINacRzv( zhwswmN18g>8eQp$%n)@gxy%d`AnR@)*>hVh9hhrC(7h$%q3-X7Z9EQ@!Y>MgTtmwZ3fTl{yv+x-uewEtOE zgMah=k^gPtV#qx)nv6~^teC5vktHQRXUHdR zz&S<3%D!FqF9JfMh%BOlrNL&1c0$j nw-kVh(v1vqt;|=VaM#E(S5Mw?L;N;w)9AE-nyk`^1=_v8<#_qy delta 576 zcmah^ze_?<6h8O*o|>lpqW7LZz?;u}QVy1;BGHyjl|y4tL$x$FxMWi_iFB5Tpv@_w zcmxd%LTivgvtvW_FJzsomNxalcR1fU-?``9_tM!)EnG>bv-$aq5Gf%s7==jZ<~vm( zwmkqa0l@CNRCfRd>3IeCk6H~tGVmn1Rb1ZM-!0?4!+(1>!fehP4rlimYz8&ErEaKw zt=sF~OK)FmJeS2`J!!B89p-=xMSujj!S&*PgHs=F>V^lrFeKo_Rr$hm-DVt@40F=k zv66Y5zC!tw9K^aYgU3w6@jw`7m0|%xRF-WgQ9^Dw>15rY^l~{aeU6@fz&6*%EK=@2 z)v6WpNnh&M*RrgkCaEK$6a9&ZTB0nEhe1=7n-;JhjP<{4@Jt^4`V4m`Y%Nq)@X@u0 zpOK_rUXmqBC=8#cHG5TrxKEMm2yBt+_Ca)%sY#LzyjG%IxxlIw$15{1HYYvA-euHj Yn-;slc+6q~*J9S>2Xza?A9No62FfL6O#lD@ diff --git a/src/object.c b/src/object.c new file mode 100644 index 0000000..dfb5ca3 --- /dev/null +++ b/src/object.c @@ -0,0 +1,54 @@ +#include + +#include +#include +#include + +void fxe_object_init(fxe_object * object) +{ + memset(object, 0, sizeof(fxe_object)); +} + + +void fxe_object_set_points(fxe_object * object, render_integer_point * points, uint32_t n, bool copy) +{ + + if (copy) + { + object->points = malloc(n*sizeof(render_integer_point)); + if (!object->points) + return; + memcpy(object->points, points, n*sizeof(render_integer_point)); + //memcpy() + } + + object->p_owner = copy; + object->p_size = n; +} + + +void fxe_object_set_faces(fxe_object * object, render_triangle * faces, uint32_t n, bool copy) +{ + if (copy) + { + object->faces = malloc(n*sizeof(render_integer_point)); + if (!object->faces) + return; + memcpy(object->faces, faces, n*sizeof(render_integer_point)); + } + + object->f_owner = copy; + object->f_size = n; +} + + +void fxe_object_delete(fxe_object * object) +{ + if (object->points && object->p_owner) + free(object->points); + + if (object->faces && object->f_owner) + free(object->faces); + + fxe_object_init(object); +} diff --git a/src/render/bitmap.c b/src/render/bitmap.c index 424a531..e82b06a 100644 --- a/src/render/bitmap.c +++ b/src/render/bitmap.c @@ -1,5 +1,5 @@ #include -#include +#include #include #include diff --git a/src/render/translate.c b/src/render/translate.c index 7d9d75c..62c8d8f 100644 --- a/src/render/translate.c +++ b/src/render/translate.c @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/src/render/triangle.c b/src/render/triangle.c index f974be1..b762cd6 100644 --- a/src/render/triangle.c +++ b/src/render/triangle.c @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include #ifdef USE_LIBPROF #include diff --git a/src/render/zbuffer.c b/src/render/zbuffer.c index c4b3e76..1620ab7 100644 --- a/src/render/zbuffer.c +++ b/src/render/zbuffer.c @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include #include @@ -28,11 +28,11 @@ void render_zbuffer_clear() { uint32_t indice = 0; - /// if (isSH3()) + if (isSH3()) for (indice = 0; indice < size_uint32; indice ++) zbuffer[indice] = render_max_dist; - /// else - /// dma_memset(zbuffer, render_max_dist, size_char); + else + dma_memset(zbuffer, render_max_dist, size_char); }