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 f76a3ad68c8aa85cb286f278fc554fe8cfb9a6f3
parent 5a0baa541f00a8cecd6a2f42c0c04c2decf6749b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 18 Jan 2016 11:22:17 +0100

Implement and test the s3d_scene_get_device function

Diffstat:
Msrc/s3d.h | 6++++++
Msrc/s3d_scene.c | 8++++++++
Msrc/test_s3d_scene.c | 10+++++++++-
3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/s3d.h b/src/s3d.h @@ -344,6 +344,12 @@ s3d_scene_get_aabb float lower[3], /* AABB lower bound */ float upper[3]); /* AABB upper bound */ +/* Retrieve the device from which the scene was created */ +S3D_API res_T +s3d_scene_get_device + (struct s3d_scene* scn, + struct s3d_device** dev); + /******************************************************************************* * Shape API - A shape defines a geometry that can be attached to *one* scene. ******************************************************************************/ diff --git a/src/s3d_scene.c b/src/s3d_scene.c @@ -1266,3 +1266,11 @@ s3d_scene_get_aabb(struct s3d_scene* scn, float lower[3], float upper[3]) return RES_OK; } +res_T +s3d_scene_get_device(struct s3d_scene* scn, struct s3d_device** dev) +{ + if(!scn || !dev) return RES_BAD_ARG; + *dev = scn->dev; + return RES_OK; +} + diff --git a/src/test_s3d_scene.c b/src/test_s3d_scene.c @@ -88,7 +88,7 @@ main(int argc, char** argv) { struct mem_allocator allocator; struct s3d_primitive prims[10]; - struct s3d_device* dev; + struct s3d_device* dev, *dev2; struct s3d_scene* scn; struct s3d_scene* scn2; struct s3d_scene* scn3; @@ -315,6 +315,14 @@ main(int argc, char** argv) CHECK(eq_epsf(volume, 1.f, 1.e-6f), 1); CHECK(s3d_scene_end_session(scn), RES_OK); + CHECK(s3d_scene_get_device(NULL, NULL), RES_BAD_ARG); + CHECK(s3d_scene_get_device(scn, NULL), RES_BAD_ARG); + CHECK(s3d_scene_get_device(NULL, &dev2), RES_BAD_ARG); + CHECK(s3d_scene_get_device(scn, &dev2), RES_OK); + CHECK(dev2, dev); + CHECK(s3d_scene_get_device(scn2, &dev2), RES_OK); + CHECK(dev2, dev); + CHECK(s3d_scene_ref_put(scn), RES_OK); CHECK(s3d_scene_ref_put(scn2), RES_OK); CHECK(s3d_shape_ref_put(shapes[0]), RES_OK);