Skip to content

Instantly share code, notes, and snippets.

@Luomu
Created July 7, 2013 01:25
Show Gist options
  • Select an option

  • Save Luomu/5941894 to your computer and use it in GitHub Desktop.

Select an option

Save Luomu/5941894 to your computer and use it in GitHub Desktop.
RTT test in MV
diff --git a/src/ModelViewer.cpp b/src/ModelViewer.cpp
index 3145ce0..011cc8d 100644
--- a/src/ModelViewer.cpp
+++ b/src/ModelViewer.cpp
@@ -105,6 +105,14 @@ ModelViewer::ModelViewer(Graphics::Renderer *r, LuaManager *lm)
animSlider = 0;
onModelChanged.connect(sigc::mem_fun(*this, &ModelViewer::SetupUI));
+
+ Graphics::RenderTargetDesc rtd(256, 256, Graphics::TEXTURE_RGB_888, Graphics::TEXTURE_DEPTH, false);
+ m_renderTarget = r->CreateRenderTarget(rtd);
+
+ Graphics::MaterialDescriptor desc;
+ desc.textures = 1;
+ m_showRttMaterial.Reset(r->CreateMaterial(desc));
+ m_showRttMaterial->texture0 = m_renderTarget->GetColorTexture();
}
ModelViewer::~ModelViewer()
@@ -326,19 +334,19 @@ void ModelViewer::DrawBackground()
m_renderer->SetOrthographicProjection(0.f, 1.f, 0.f, 1.f, -1.f, 1.f);
m_renderer->SetTransform(matrix4x4f::Identity());
- static Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_DIFFUSE);
+ static Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_UV0);
va.Clear();
const Color4f top = Color::BLACK;
const Color4f bottom = Color4f(0.3f);
- va.Add(vector3f(0.f, 0.f, 0.f), bottom);
- va.Add(vector3f(1.f, 0.f, 0.f), bottom);
- va.Add(vector3f(1.f, 1.f, 0.f), top);
+ va.Add(vector3f(0.f, 0.f, 0.f), vector2f(0.f, 0.f));
+ va.Add(vector3f(1.f, 0.f, 0.f), vector2f(1.f, 0.f));
+ va.Add(vector3f(1.f, 1.f, 0.f), vector2f(1.f, 1.f));
- va.Add(vector3f(0.f, 0.f, 0.f), bottom);
- va.Add(vector3f(1.f, 1.f, 0.f), top);
- va.Add(vector3f(0.f, 1.f, 0.f), top);
+ va.Add(vector3f(0.f, 0.f, 0.f), vector2f(0.f, 0.f));
+ va.Add(vector3f(1.f, 1.f, 0.f), vector2f(1.f, 1.f));
+ va.Add(vector3f(0.f, 1.f, 0.f), vector2f(0.f, 1.f));
- m_renderer->DrawTriangles(&va, Graphics::vtxColorMaterial);
+ m_renderer->DrawTriangles(&va, m_showRttMaterial.Get());
}
void ModelViewer::DrawDockingLocators()
@@ -530,6 +538,11 @@ void ModelViewer::DrawGrid(const matrix4x4f &trans, float radius)
void ModelViewer::DrawModel()
{
+ m_renderer->SetDepthWrite(true);
+ m_renderer->SetRenderTarget(m_renderTarget);
+ m_renderer->SetViewport(0, 0, 256, 256);
+ m_renderer->ClearScreen();
+
assert(m_model);
m_renderer->SetBlendMode(Graphics::BLEND_SOLID);
@@ -571,6 +584,9 @@ void ModelViewer::DrawModel()
m_renderer->SetTransform(mv);
DrawDockingLocators();
}
+
+ m_renderer->SetRenderTarget(0);
+ m_renderer->SetViewport(0, 0, Graphics::GetScreenWidth(), Graphics::GetScreenHeight());
}
void ModelViewer::MainLoop()
diff --git a/src/ModelViewer.h b/src/ModelViewer.h
index b9a1c4b..c18fa59 100644
--- a/src/ModelViewer.h
+++ b/src/ModelViewer.h
@@ -11,6 +11,7 @@
#include "NavLights.h"
#include "graphics/Renderer.h"
#include "graphics/Texture.h"
+#include "graphics/RenderTarget.h"
#include "scenegraph/SceneGraph.h"
#include "ui/Context.h"
@@ -111,6 +112,9 @@ private:
UI::Slider *thrustSliders[2*3]; //thruster sliders 2*xyz (linear & angular)
sigc::signal<void> onModelChanged;
+
+ Graphics::RenderTarget *m_renderTarget;
+ RefCountedPtr<Graphics::Material> m_showRttMaterial;
};
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment