Progress on new RTT widget, now I see a white rectangle
This commit is contained in:
parent
bca5beeaa7
commit
60fead1eea
@ -1880,6 +1880,16 @@ void Skin::process3DPane(IGUIElement *element, const core::recti &rect,
|
||||
if (!widget->m_event_handler->m_deactivated)
|
||||
drawSpinnerChild(rect, widget, pressed, focused);
|
||||
}
|
||||
else if (type == WTYPE_MODEL_VIEW)
|
||||
{
|
||||
ModelViewWidget* mvw = dynamic_cast<ModelViewWidget*>(widget);
|
||||
FrameBuffer* fb = mvw->getFrameBuffer();
|
||||
if (fb->getRTT().size() > 0)
|
||||
{
|
||||
draw2DImageFromRTT(fb->getRTT()[0], 512, 512,
|
||||
rect, core::rect<s32>(0, 0, 512, 512), NULL, true);
|
||||
}
|
||||
}
|
||||
else if (type == WTYPE_ICON_BUTTON || type == WTYPE_MODEL_VIEW)
|
||||
{
|
||||
drawIconButton(rect, widget, pressed, focused);
|
||||
|
@ -35,7 +35,10 @@ using namespace irr::gui;
|
||||
ModelViewWidget::ModelViewWidget() :
|
||||
IconButtonWidget(IconButtonWidget::SCALE_MODE_KEEP_TEXTURE_ASPECT_RATIO, false, false)
|
||||
{
|
||||
//FIXME: find nicer way than overriding what IconButtonWidget's constructor already set...
|
||||
m_frame_buffer = NULL;
|
||||
m_rtt_main_node = NULL;
|
||||
m_camera = NULL;
|
||||
m_light = NULL;
|
||||
m_type = WTYPE_MODEL_VIEW;
|
||||
m_rtt_provider = NULL;
|
||||
m_rotation_mode = ROTATE_OFF;
|
||||
@ -161,31 +164,20 @@ void ModelViewWidget::update(float delta)
|
||||
std::string name = "model view ";
|
||||
name += m_properties[PROP_ID].c_str();
|
||||
m_rtt_provider = new RTT(512, 512);
|
||||
setupRTTScene(m_models, m_model_location, m_model_scale, m_model_frames);
|
||||
|
||||
if (m_rtt_main_node == NULL)
|
||||
setupRTTScene(m_models, m_model_location, m_model_scale, m_model_frames);
|
||||
}
|
||||
|
||||
irr_driver->setRTT(m_rtt_provider);
|
||||
|
||||
std::vector<IrrDriver::GlowData> glows;
|
||||
irr_driver->renderScene(m_camera, glows, GUIEngine::getLatestDt(), false);
|
||||
FrameBuffer* fb = irr_driver->getPostProcessing()->render(m_camera);
|
||||
m_frame_buffer = irr_driver->getPostProcessing()->render(m_camera);
|
||||
glViewport(0, 0, UserConfigParams::m_width, UserConfigParams::m_height);
|
||||
|
||||
/*
|
||||
if (m_texture != NULL)
|
||||
{
|
||||
setImage(m_texture);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_rtt_unsupported = true;
|
||||
}
|
||||
*/
|
||||
|
||||
//irr_driver->setRTT(NULL);
|
||||
|
||||
irr_driver->onUnloadWorld();
|
||||
m_rtt_provider = NULL;
|
||||
irr_driver->setRTT(NULL);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
|
||||
irr_driver->getSceneManager()->setActiveCamera(NULL);
|
||||
}
|
||||
|
@ -64,6 +64,8 @@ namespace GUIEngine
|
||||
|
||||
scene::ILightSceneNode *m_light;
|
||||
|
||||
FrameBuffer *m_frame_buffer;
|
||||
|
||||
public:
|
||||
|
||||
LEAK_CHECK()
|
||||
@ -100,6 +102,8 @@ namespace GUIEngine
|
||||
AlignedArray<Vec3>& mesh_location,
|
||||
AlignedArray<Vec3>& mesh_scale,
|
||||
const std::vector<int>& model_frames);
|
||||
|
||||
FrameBuffer* getFrameBuffer() { return m_frame_buffer; }
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user