star-3d

Surface structuring for efficient 3D geometric queries
git clone git://git.meso-star.fr/star-3d.git
Log | Files | Refs | README | LICENSE

commit 677bad93dd788141b13f87c5d10557fff0264dff
parent 2a16edfa7aa9ca88a76cf1e8ec52f12ccc43b35b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 28 Jul 2015 17:33:31 +0200

Add the S3D_PRIMITIVE_EQ macro

Define whether 2 primitives are equal or not

Diffstat:
Msrc/s3d.h | 6++++++
Msrc/test_s3d_sampler.c | 13+++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/s3d.h b/src/s3d.h @@ -103,6 +103,12 @@ struct s3d_primitive { void* inst__; }; +/* Helper macro that defines whether or not 2 primites are equal */ +#define S3D_PRIMITIVE_EQ(Prim0, Prim1) \ + ( (Prim0)->prim_id == (Prim1)->prim_id \ + && (Prim0)->geom_id == (Prim1)->geom_id \ + && (Prim0)->inst_id == (Prim1)->inst_id) + /* Untyped vertex attribute */ struct s3d_attrib { float value[4]; diff --git a/src/test_s3d_sampler.c b/src/test_s3d_sampler.c @@ -59,6 +59,7 @@ main(int argc, char** argv) struct s3d_vertex_data attribs[2]; struct s3d_sampler* sampler; struct s3d_primitive prim; + struct s3d_primitive prim1; struct s3d_attrib attr0, attr1; struct cbox_desc desc; float uv[2]; @@ -127,6 +128,18 @@ main(int argc, char** argv) CHECK(s3d_sampler_get(sampler, 0.5f, 0.5f, 0.5f, &prim, uv), RES_OK); CHECK(s3d_primitive_get_attrib(&prim, S3D_POSITION, uv, &attr1), RES_OK); + prim = prim1; + CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 1); + prim1.inst_id = S3D_INVALID_ID; + CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + prim1.inst_id = prim.inst_id;; + CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 1); + prim1.prim_id = S3D_INVALID_ID; + CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + prim1.prim_id = prim.prim_id; + prim1.geom_id = S3D_INVALID_ID; + CHECK(S3D_PRIMITIVE_EQ(&prim, &prim1), 0); + CHECK(attr0.type, S3D_FLOAT3); CHECK(attr1.type, S3D_FLOAT3); CHECK(f3_eq_eps(attr0.value, attr1.value, 1.e-6f), 1);