Skip to content

Commit 797caa7

Browse files
author
Tiffany Bennett
committed
Make bouncing lights demo compile
1 parent 64207e9 commit 797caa7

File tree

7 files changed

+177
-346
lines changed

7 files changed

+177
-346
lines changed

src/bouncing-lights/ball.cpp

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "ball.hpp"
22

3+
#include "Demo.h"
4+
35
extern "C" {
46
#include "graphics/context.h"
57
#include "graphics/material.h"
@@ -16,76 +18,50 @@ enum {
1618

1719
using namespace BouncingLights;
1820

19-
extern ilA_fs demo_fs;
20-
21-
void BallRenderer::free(void *ptr)
21+
void BallRenderer::free()
2222
{
23-
BallRenderer &self = *reinterpret_cast<BallRenderer*>(ptr);
24-
ilG_mesh_free(&self.mesh);
25-
ilG_renderman_delMaterial(self.rm, self.mat);
23+
ilG_mesh_free(&mesh);
24+
ilG_renderman_delMaterial(rm, mat);
2625
}
2726

28-
void BallRenderer::draw(void *obj, ilG_rendid id, il_mat **mats, const unsigned *objects, unsigned num_mats)
27+
void BallRenderer::draw(il_mat *mvp, il_mat *imt, il_vec3 *col, size_t count)
2928
{
30-
(void)id, (void)objects;
31-
BallRenderer &self = *reinterpret_cast<BallRenderer*>(obj);
32-
ilG_material *mat = ilG_renderman_findMaterial(self.rm, self.mat);
33-
ilG_mesh_bind(&self.mesh);
29+
ilG_material *mat = ilG_renderman_findMaterial(rm, this->mat);
30+
ilG_mesh_bind(&mesh);
3431
ilG_material_bind(mat);
35-
for (unsigned i = 0; i < num_mats; i++) {
36-
ilG_material_bindMatrix(mat, self.mvp_loc, mats[MVP][i]);
37-
ilG_material_bindMatrix(mat, self.imt_loc, mats[IMT][i]);
38-
il_vec3 c = self.cols[objects[i]];
39-
glUniform3f(self.col_loc, c.x, c.y, c.z);
40-
ilG_mesh_draw(&self.mesh);
32+
for (unsigned i = 0; i < count; i++) {
33+
ilG_material_bindMatrix(mat, mvp_loc, mvp[i]);
34+
ilG_material_bindMatrix(mat, imt_loc, imt[i]);
35+
il_vec3 c = col[i];
36+
glUniform3f(col_loc, c.x, c.y, c.z);
37+
ilG_mesh_draw(&mesh);
4138
}
4239
}
4340

44-
bool BallRenderer::build(void *obj, ilG_rendid id, ilG_renderman *rm, ilG_buildresult *out)
41+
bool BallRenderer::build(ilG_renderman *rm, char **error)
4542
{
46-
(void)id;
47-
BallRenderer &b = *reinterpret_cast<BallRenderer*>(obj);
48-
49-
b.rm = rm;
43+
this->rm = rm;
5044

5145
ilG_material m;
5246
ilG_material_init(&m);
5347
ilG_material_name(&m, "Ball Material");
5448
ilG_material_fragData(&m, ILG_CONTEXT_NORMAL, "out_Normal");
5549
ilG_material_fragData(&m, ILG_CONTEXT_ALBEDO, "out_Albedo");
5650
ilG_material_arrayAttrib(&m, ILG_MESH_POS, "in_Position");
57-
if (!ilG_renderman_addMaterialFromFile(rm, m, "glow.vert", "glow.frag", &b.mat, &out->error)) {
51+
if (!ilG_renderman_addMaterialFromFile(rm, m, "glow.vert", "glow.frag", &mat, error)) {
5852
return false;
5953
}
60-
ilG_material *mat = ilG_renderman_findMaterial(rm, b.mat);
61-
b.mvp_loc = ilG_material_getLoc(mat, "mvp");
62-
b.imt_loc = ilG_material_getLoc(mat, "imt");
63-
b.col_loc = ilG_material_getLoc(mat, "col");
54+
ilG_material *mat = ilG_renderman_findMaterial(rm, this->mat);
55+
mvp_loc = ilG_material_getLoc(mat, "mvp");
56+
imt_loc = ilG_material_getLoc(mat, "imt");
57+
col_loc = ilG_material_getLoc(mat, "col");
6458

65-
if (!ilG_mesh_fromfile(&b.mesh, &demo_fs, "sphere.obj")) {
59+
if (!ilG_mesh_fromfile(&mesh, &demo_fs, "sphere.obj")) {
6660
return false;
6761
}
68-
if (!ilG_mesh_build(&b.mesh)) {
62+
if (!ilG_mesh_build(&mesh)) {
6963
return false;
7064
}
7165

72-
int *types = (int*)calloc(2, sizeof(int));
73-
types[MVP] = ILG_MVP;
74-
types[IMT] = ILG_IMT;
75-
out->free = &BallRenderer::free;
76-
out->draw = &BallRenderer::draw;
77-
out->types = types;
78-
out->num_types = 2;
79-
out->obj = obj;
80-
out->name = strdup("Ball");
8166
return true;
8267
}
83-
84-
namespace BouncingLights {
85-
86-
ilG_builder BallRenderer::builder()
87-
{
88-
return ilG_builder_wrap(this, &BallRenderer::build);
89-
}
90-
91-
}

src/bouncing-lights/ball.hpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,11 @@ class BallRenderer {
1919
ilG_mesh mesh;
2020
ilG_matid mat;
2121
GLuint mvp_loc, imt_loc, col_loc;
22-
std::unordered_map<unsigned, il_vec3> cols;
2322

24-
static void free(void *ptr);
25-
static void draw(void *obj, ilG_rendid id, il_mat **mats, const unsigned *objects, unsigned num_mats);
26-
static bool build(void *obj, ilG_rendid id, ilG_renderman *rm, ilG_buildresult *out);
2723
public:
28-
ilG_builder builder();
29-
void add_col(unsigned obj, il_vec3 col)
30-
{
31-
cols.insert(std::make_pair(obj, col));
32-
}
24+
void free();
25+
bool build(ilG_renderman *rm, char **error);
26+
void draw(il_mat *mvp, il_mat *imt, il_vec3 *col, size_t count);
3327
};
3428

3529
}

0 commit comments

Comments
 (0)