Rearranged some functions.
This commit is contained in:
parent
9e835a1110
commit
2a072f9347
@ -7,6 +7,9 @@
|
||||
using namespace PolyVox;
|
||||
using namespace std;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Public functions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
OpenGLWidget::OpenGLWidget(QWidget *parent)
|
||||
:QGLWidget(parent)
|
||||
,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)
|
||||
{
|
||||
m_viewableRegion = viewableRegion;
|
||||
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()
|
||||
{
|
||||
GLenum err = glewInit();
|
||||
@ -160,27 +187,9 @@ void OpenGLWidget::paintGL()
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLWidget::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Private functions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void OpenGLWidget::setupWorldToCameraMatrix()
|
||||
{
|
||||
QVector3D lowerCorner(m_viewableRegion.getLowerX(), m_viewableRegion.getLowerY(), m_viewableRegion.getLowerZ());
|
||||
|
@ -52,17 +52,6 @@ public:
|
||||
// Constructor
|
||||
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.
|
||||
template <typename MeshType>
|
||||
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);
|
||||
}
|
||||
|
||||
// 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:
|
||||
|
||||
// Qt OpenGL functions
|
||||
|
Loading…
x
Reference in New Issue
Block a user