Rearranged some functions.
This commit is contained in:
parent
9e835a1110
commit
2a072f9347
@ -7,6 +7,9 @@
|
|||||||
using namespace PolyVox;
|
using namespace PolyVox;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Public functions
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
OpenGLWidget::OpenGLWidget(QWidget *parent)
|
OpenGLWidget::OpenGLWidget(QWidget *parent)
|
||||||
:QGLWidget(parent)
|
:QGLWidget(parent)
|
||||||
,m_viewableRegion(Region(0, 0, 0, 255, 255, 255))
|
,m_viewableRegion(Region(0, 0, 0, 255, 255, 255))
|
||||||
@ -15,17 +18,41 @@ OpenGLWidget::OpenGLWidget(QWidget *parent)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenGLWidget::setShader(QSharedPointer<QGLShaderProgram> shader)
|
||||||
|
{
|
||||||
|
mShader = shader;
|
||||||
|
}
|
||||||
|
|
||||||
void OpenGLWidget::setViewableRegion(Region viewableRegion)
|
void OpenGLWidget::setViewableRegion(Region viewableRegion)
|
||||||
{
|
{
|
||||||
m_viewableRegion = viewableRegion;
|
m_viewableRegion = viewableRegion;
|
||||||
setupWorldToCameraMatrix();
|
setupWorldToCameraMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLWidget::setShader(QSharedPointer<QGLShaderProgram> shader)
|
void OpenGLWidget::mousePressEvent(QMouseEvent* event)
|
||||||
{
|
{
|
||||||
mShader = shader;
|
m_CurrentMousePos = event->pos();
|
||||||
|
m_LastFrameMousePos = m_CurrentMousePos;
|
||||||
|
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenGLWidget::mouseMoveEvent(QMouseEvent* event)
|
||||||
|
{
|
||||||
|
m_CurrentMousePos = event->pos();
|
||||||
|
QPoint diff = m_CurrentMousePos - m_LastFrameMousePos;
|
||||||
|
m_xRotation += diff.x();
|
||||||
|
m_yRotation += diff.y();
|
||||||
|
m_LastFrameMousePos = m_CurrentMousePos;
|
||||||
|
|
||||||
|
setupWorldToCameraMatrix();
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Protected functions
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void OpenGLWidget::initializeGL()
|
void OpenGLWidget::initializeGL()
|
||||||
{
|
{
|
||||||
GLenum err = glewInit();
|
GLenum err = glewInit();
|
||||||
@ -160,27 +187,9 @@ void OpenGLWidget::paintGL()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLWidget::mousePressEvent(QMouseEvent* event)
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
{
|
// Private functions
|
||||||
m_CurrentMousePos = event->pos();
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
m_LastFrameMousePos = m_CurrentMousePos;
|
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLWidget::mouseMoveEvent(QMouseEvent* event)
|
|
||||||
{
|
|
||||||
m_CurrentMousePos = event->pos();
|
|
||||||
QPoint diff = m_CurrentMousePos - m_LastFrameMousePos;
|
|
||||||
m_xRotation += diff.x();
|
|
||||||
m_yRotation += diff.y();
|
|
||||||
m_LastFrameMousePos = m_CurrentMousePos;
|
|
||||||
|
|
||||||
setupWorldToCameraMatrix();
|
|
||||||
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OpenGLWidget::setupWorldToCameraMatrix()
|
void OpenGLWidget::setupWorldToCameraMatrix()
|
||||||
{
|
{
|
||||||
QVector3D lowerCorner(m_viewableRegion.getLowerX(), m_viewableRegion.getLowerY(), m_viewableRegion.getLowerZ());
|
QVector3D lowerCorner(m_viewableRegion.getLowerX(), m_viewableRegion.getLowerY(), m_viewableRegion.getLowerZ());
|
||||||
|
@ -52,17 +52,6 @@ public:
|
|||||||
// Constructor
|
// Constructor
|
||||||
OpenGLWidget(QWidget *parent);
|
OpenGLWidget(QWidget *parent);
|
||||||
|
|
||||||
// Mouse handling
|
|
||||||
void mouseMoveEvent(QMouseEvent* event);
|
|
||||||
void mousePressEvent(QMouseEvent* event);
|
|
||||||
|
|
||||||
// The viewable region can be adjusted so that this example framework can be used for different volume sizes.
|
|
||||||
void setViewableRegion(PolyVox::Region viewableRegion);
|
|
||||||
|
|
||||||
// For our purposes we use a single shader for the whole volume, and
|
|
||||||
// this example framework is only meant to show a single volume at a time
|
|
||||||
void setShader(QSharedPointer<QGLShaderProgram> shader);
|
|
||||||
|
|
||||||
// Convert a SurfaceMesh to OpenGL index/vertex buffers. Inlined because it's templatised.
|
// Convert a SurfaceMesh to OpenGL index/vertex buffers. Inlined because it's templatised.
|
||||||
template <typename MeshType>
|
template <typename MeshType>
|
||||||
void addMesh(const MeshType& surfaceMesh, const PolyVox::Vector3DInt32& translation = PolyVox::Vector3DInt32(0, 0, 0), float scale = 1.0f)
|
void addMesh(const MeshType& surfaceMesh, const PolyVox::Vector3DInt32& translation = PolyVox::Vector3DInt32(0, 0, 0), float scale = 1.0f)
|
||||||
@ -110,6 +99,17 @@ public:
|
|||||||
mMeshData.push_back(meshData);
|
mMeshData.push_back(meshData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For our purposes we use a single shader for the whole volume, and
|
||||||
|
// this example framework is only meant to show a single volume at a time
|
||||||
|
void setShader(QSharedPointer<QGLShaderProgram> shader);
|
||||||
|
|
||||||
|
// The viewable region can be adjusted so that this example framework can be used for different volume sizes.
|
||||||
|
void setViewableRegion(PolyVox::Region viewableRegion);
|
||||||
|
|
||||||
|
// Mouse handling
|
||||||
|
void mouseMoveEvent(QMouseEvent* event);
|
||||||
|
void mousePressEvent(QMouseEvent* event);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Qt OpenGL functions
|
// Qt OpenGL functions
|
||||||
|
Loading…
x
Reference in New Issue
Block a user