khanat-opennel-code/code/nel/samples/3d/qtnel/qnelwidget.cpp

99 lines
No EOL
2.8 KiB
C++

// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "qnelwidget.h"
#if defined(Q_WS_WIN)
#include <windows.h> // needed for WindowFromDC()
#else
#include <Qt/qx11info_x11.h>
#include <X11/Xlib.h>
#endif
#include <nel/misc/types_nl.h>
#include <nel/misc/debug.h>
#include <nel/3d/nelu.h>
#include <nel/3d/init_3d.h>
#include <nel/3d/register_3d.h>
#include <nel/misc/path.h>
void QNelWidget::init()
{
nlinfo("start init.");
// do something, like initialize the basic system.
NL3D::init3d();
NL3D::CScene::registerBasics();
NL3D::registerSerial3d();
nlinfo("end init.");
}
void QNelWidget::initializeGL()
{
// initialize NeL context if needed
if (!NLMISC::INelContext::isContextInitialised())
new NLMISC::CApplicationContext;
nlinfo("start initialize gl");
NLMISC::CPath::addSearchPath(".");
// The viewport
NL3D::CViewport viewport;
// Create a dummy driver.
//NL3D::IDriver *driver=NL3D::CDRU::createGlDriver();
//void *windowId = (void*)(this->parentWidget()->winId());
// Init NELU
if (!NL3D::CNELU::init(width(), height(), viewport, 32, true, (void *)winId(), false, false))
{
return;
}
//_SceneRoot= (NL3D::CTransform*)NL3D::CNELU::Scene->createModel(NL3D::TransformId);
NL3D::CTransformShape *sphere = NL3D::CNELU::Scene->createInstance("sphere01.shape");
fontManager.setMaxMemory(2000000);
tc.init(NL3D::CNELU::Driver, &fontManager);
tc.setFontGenerator (NLMISC::CPath::lookup("beteckna.ttf"));
nlinfo("end initialize gl");
}
void QNelWidget::paintGL()
{
nlinfo("start painting gl");
NL3D::CNELU::clearBuffers(NL3D::CRGBA(0,0,0));
tc.setColor(NL3D::CRGBA (0, 0, 255));
tc.setFontSize(40);
tc.setHotSpot(NL3D::CComputedString::BottomLeft);
tc.printAt(0.3f, 0.5f, std::string("NeL"));
nlinfo("end painting gl");
}
void QNelWidget::resizeGL(int width, int height)
{
nlinfo("start resize gl");
// handle moves or resizes.
nlinfo("end resize gl");
}
void QNelWidget::swapBuffers() {
nlinfo("starting rendering.");
// render a frame
NL3D::CNELU::swapBuffers();
nlinfo("finished rendering.");
}