Пример #1
0
void MatrixStack::Apply(RenderDevice& render_device)
{
	if(_state_dirty)
	{
		State& current_state = _states.top();
		
		render_device.SetUniformMatrix4f("view_matrix", current_state.view_matrix);

		// model_view = view * model
		Mat4x4 model_view = matrix::Multiply(current_state.view_matrix, current_state.model_matrix);
		render_device.SetUniformMatrix4f("model_view_matrix", model_view);

		// Build our model view projection matrix
		//	model_view_projection = projection * view * model
		Mat4x4 model_view_projection = matrix::Multiply(current_state.projection_matrix, model_view);

		render_device.SetUniformMatrix4f("model_view_projection_matrix", model_view_projection);


		_state_dirty = false;
	}
}