Skip to content

Commit 612f68a

Browse files
author
Alfonse
committed
Added extra matrices to nodes in the scene system.
1 parent 34a3be8 commit 612f68a

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

Tut 18 Bumpy Textures/Bumpy Square.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,11 @@ void display()
326326
glBindBuffer(GL_UNIFORM_BUFFER, 0);
327327
}
328328

329+
{
330+
glm::mat4 temp(1.0f);
331+
g_nodes[0].SetNodePreTransform(glm::rotate(temp, 20.0f, glm::vec3(0.0f, 1.0f, 0.0f)));
332+
}
333+
329334
g_pScene->Render(modelMatrix.Top());
330335

331336
if(g_pObjPole && g_bDrawLightPos)
@@ -338,7 +343,7 @@ void display()
338343
glUseProgram(g_unlitProg);
339344
glUniformMatrix4fv(g_unlitModelToCameraMatrixUnif, 1, GL_FALSE,
340345
glm::value_ptr(modelMatrix.Top()));
341-
glUniform4f(g_unlitObjectColorUnif, 0.25f, 0.25f, 0.25f, 1.0f);
346+
glUniform4f(g_unlitObjectColorUnif, 0.01f, 0.01f, 0.01f, 1.0f);
342347
g_pSphereMesh->Render("flat");
343348
}
344349

framework/Scene.cpp

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,20 +196,26 @@ namespace Framework
196196
: m_orient(1.0f, 0.0f, 0.0f, 0.0f)
197197
, m_scale(1.0f, 1.0f, 1.0f)
198198
, m_trans(0.0f, 0.0f, 0.0f)
199+
, m_postTransform(1.0f)
200+
, m_preTransform(1.0f)
199201
{}
200202

201203
glm::mat4 GetMatrix() const
202204
{
203-
glm::mat4 ret;
205+
glm::mat4 ret = m_postTransform;
204206
ret = glm::translate(ret, m_trans);
205207
ret *= glm::mat4_cast(m_orient);
206208
ret = glm::scale(ret, m_scale);
209+
ret *= m_preTransform;
207210
return ret;
208211
}
209212

210213
glm::fquat m_orient;
211214
glm::vec3 m_scale;
212215
glm::vec3 m_trans;
216+
217+
glm::mat4 m_postTransform;
218+
glm::mat4 m_preTransform;
213219
};
214220

215221
enum SamplerTypes
@@ -347,6 +353,16 @@ namespace Framework
347353
m_nodeTm.m_scale = nodeScale;
348354
}
349355

356+
void SetNodePreTransform(const glm::mat4 &preTransform)
357+
{
358+
m_nodeTm.m_preTransform = preTransform;
359+
}
360+
361+
void SetNodePostTransform(const glm::mat4 &postTransform)
362+
{
363+
m_nodeTm.m_postTransform = postTransform;
364+
}
365+
350366
void Render(const std::vector<GLuint> &samplers, glm::mat4 baseMat) const
351367
{
352368
if(m_baseVariant.pProg)
@@ -1145,6 +1161,16 @@ namespace Framework
11451161
m_pNode->NodeSetTrans(offset);
11461162
}
11471163

1164+
void NodeRef::SetNodePreTransform( const glm::mat4 &preTransform )
1165+
{
1166+
m_pNode->SetNodePreTransform(preTransform);
1167+
}
1168+
1169+
void NodeRef::SetNodePostTransform( const glm::mat4 &postTransform )
1170+
{
1171+
m_pNode->SetNodePostTransform(postTransform);
1172+
}
1173+
11481174
void NodeRef::SetStateBinder( StateBinder *pBinder )
11491175
{
11501176
m_pNode->SetStateBinder(pBinder);

framework/Scene.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ namespace Framework
3535
//Sets the current translation to the given one.
3636
void NodeSetTrans(const glm::vec3 &offset);
3737

38+
//Sets the pre-transform matrix.
39+
void SetNodePreTransform(const glm::mat4 &preTransform);
40+
//Sets the post-transform matrix.
41+
void SetNodePostTransform(const glm::mat4 &postTransform);
42+
3843
//This object does *NOT* claim ownership of the pointer.
3944
//You must ensure that it stays around so long as this Scene exists.
4045
void SetStateBinder(StateBinder *pBinder);

0 commit comments

Comments
 (0)