mirror of https://github.com/CGAL/cgal
Pass to OpenGL_ES_2
This commit is contained in:
parent
2d9000efde
commit
301416c151
|
|
@ -494,14 +494,7 @@ void Camera::computeModelViewMatrix() const {
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
void Camera::loadProjectionMatrix(bool reset) const {
|
void Camera::loadProjectionMatrix(bool reset) const {
|
||||||
// WARNING: makeCurrent must be called by every calling method
|
// WARNING: makeCurrent must be called by every calling method
|
||||||
gl()->glMatrixMode(GL_PROJECTION);
|
|
||||||
|
|
||||||
if (reset)
|
|
||||||
gl()->glLoadIdentity();
|
|
||||||
|
|
||||||
computeProjectionMatrix();
|
computeProjectionMatrix();
|
||||||
|
|
||||||
gl()->glMultMatrixd(projectionMatrix_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Loads the OpenGL \c GL_MODELVIEW matrix with the modelView matrix
|
/*! Loads the OpenGL \c GL_MODELVIEW matrix with the modelView matrix
|
||||||
|
|
@ -536,12 +529,7 @@ void Camera::loadProjectionMatrix(bool reset) const {
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
void Camera::loadModelViewMatrix(bool reset) const {
|
void Camera::loadModelViewMatrix(bool reset) const {
|
||||||
// WARNING: makeCurrent must be called by every calling method
|
// WARNING: makeCurrent must be called by every calling method
|
||||||
gl()->glMatrixMode(GL_MODELVIEW);
|
|
||||||
computeModelViewMatrix();
|
computeModelViewMatrix();
|
||||||
if (reset)
|
|
||||||
gl()->glLoadMatrixd(modelViewMatrix_);
|
|
||||||
else
|
|
||||||
gl()->glMultMatrixd(modelViewMatrix_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Same as loadProjectionMatrix() but for a stereo setup.
|
/*! Same as loadProjectionMatrix() but for a stereo setup.
|
||||||
|
|
@ -575,9 +563,6 @@ void Camera::loadProjectionMatrixStereo(bool leftBuffer) const {
|
||||||
qreal left, right, bottom, top;
|
qreal left, right, bottom, top;
|
||||||
qreal screenHalfWidth, halfWidth, side, shift, delta;
|
qreal screenHalfWidth, halfWidth, side, shift, delta;
|
||||||
|
|
||||||
gl()->glMatrixMode(GL_PROJECTION);
|
|
||||||
gl()->glLoadIdentity();
|
|
||||||
|
|
||||||
switch (type()) {
|
switch (type()) {
|
||||||
case Camera::PERSPECTIVE:
|
case Camera::PERSPECTIVE:
|
||||||
// compute half width of screen,
|
// compute half width of screen,
|
||||||
|
|
@ -629,7 +614,6 @@ void Camera::loadProjectionMatrixStereo(bool leftBuffer) const {
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
void Camera::loadModelViewMatrixStereo(bool leftBuffer) const {
|
void Camera::loadModelViewMatrixStereo(bool leftBuffer) const {
|
||||||
// WARNING: makeCurrent must be called by every calling method
|
// WARNING: makeCurrent must be called by every calling method
|
||||||
gl()->glMatrixMode(GL_MODELVIEW);
|
|
||||||
|
|
||||||
qreal halfWidth = focusDistance() * tan(horizontalFieldOfView() / 2.0);
|
qreal halfWidth = focusDistance() * tan(horizontalFieldOfView() / 2.0);
|
||||||
qreal shift =
|
qreal shift =
|
||||||
|
|
@ -641,7 +625,6 @@ void Camera::loadModelViewMatrixStereo(bool leftBuffer) const {
|
||||||
modelViewMatrix_[12] -= shift;
|
modelViewMatrix_[12] -= shift;
|
||||||
else
|
else
|
||||||
modelViewMatrix_[12] += shift;
|
modelViewMatrix_[12] += shift;
|
||||||
gl()->glLoadMatrixd(modelViewMatrix_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Fills \p m with the Camera projection matrix values.
|
/*! Fills \p m with the Camera projection matrix values.
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
#include <CGAL/Qt/manipulatedCameraFrame.h>
|
#include <CGAL/Qt/manipulatedCameraFrame.h>
|
||||||
|
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QOpenGLFunctions_2_1>
|
#include <QOpenGLFunctions>
|
||||||
#include <QOpenGLShaderProgram>
|
#include <QOpenGLShaderProgram>
|
||||||
#include <QOpenGLVertexArrayObject>
|
#include <QOpenGLVertexArrayObject>
|
||||||
#include <QOpenGLBuffer>
|
#include <QOpenGLBuffer>
|
||||||
|
|
@ -75,7 +75,7 @@ href="../examples/callback.html">callback example</a> for a complete
|
||||||
implementation.
|
implementation.
|
||||||
|
|
||||||
\nosubgrouping */
|
\nosubgrouping */
|
||||||
class CGAL_QT_EXPORT QGLViewer : public QOpenGLWidget, public QOpenGLFunctions_2_1 {
|
class CGAL_QT_EXPORT QGLViewer : public QOpenGLWidget, public QOpenGLFunctions {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -210,7 +210,7 @@ If a 4.3 context could not be set, a 2.1 context will be used instead.
|
||||||
*/
|
*/
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
void CGAL::QGLViewer::initializeGL() {
|
void CGAL::QGLViewer::initializeGL() {
|
||||||
QSurfaceFormat format;
|
/*QSurfaceFormat format;
|
||||||
format.setDepthBufferSize(24);
|
format.setDepthBufferSize(24);
|
||||||
format.setStencilBufferSize(8);
|
format.setStencilBufferSize(8);
|
||||||
format.setVersion(4,3);
|
format.setVersion(4,3);
|
||||||
|
|
@ -229,9 +229,10 @@ void CGAL::QGLViewer::initializeGL() {
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_ogl_4_3 = true;
|
is_ogl_4_3 = true;
|
||||||
}
|
}*/
|
||||||
|
is_ogl_4_3 = false;
|
||||||
makeCurrent();
|
makeCurrent();
|
||||||
QOpenGLFunctions_2_1::initializeOpenGLFunctions();
|
QOpenGLFunctions::initializeOpenGLFunctions();
|
||||||
// Default colors
|
// Default colors
|
||||||
setForegroundColor(QColor(180, 180, 180));
|
setForegroundColor(QColor(180, 180, 180));
|
||||||
setBackgroundColor(QColor(51, 51, 51));
|
setBackgroundColor(QColor(51, 51, 51));
|
||||||
|
|
|
||||||
|
|
@ -490,13 +490,9 @@ void Scene::renderScene(const QList<Scene_interface::Item_id> &items,
|
||||||
if( group || item.renderingMode() == Flat || item.renderingMode() == FlatPlusEdges || item.renderingMode() == Gouraud)
|
if( group || item.renderingMode() == Flat || item.renderingMode() == FlatPlusEdges || item.renderingMode() == Gouraud)
|
||||||
{
|
{
|
||||||
if(with_names) {
|
if(with_names) {
|
||||||
viewer->glClearDepth(1.0);
|
viewer->glClearDepthf(1.0);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
if(item.renderingMode() == Gouraud)
|
|
||||||
viewer->glShadeModel(GL_SMOOTH);
|
|
||||||
else
|
|
||||||
viewer->glShadeModel(GL_FLAT);
|
|
||||||
item.draw(viewer);
|
item.draw(viewer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -543,14 +539,14 @@ void Scene::renderWireScene(const QList<Scene_interface::Item_id> &items,
|
||||||
|| item.renderingMode() == PointsPlusNormals)
|
|| item.renderingMode() == PointsPlusNormals)
|
||||||
{
|
{
|
||||||
viewer->glDisable(GL_LIGHTING);
|
viewer->glDisable(GL_LIGHTING);
|
||||||
viewer->glPointSize(2.f);
|
//viewer->glPointSize(2.f);
|
||||||
viewer->glLineWidth(1.0f);
|
viewer->glLineWidth(1.0f);
|
||||||
item.drawEdges(viewer);
|
item.drawEdges(viewer);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if( item.renderingMode() == PointsPlusNormals ){
|
if( item.renderingMode() == PointsPlusNormals ){
|
||||||
viewer->glDisable(GL_LIGHTING);
|
viewer->glDisable(GL_LIGHTING);
|
||||||
viewer->glPointSize(2.f);
|
//viewer->glPointSize(2.f);
|
||||||
viewer->glLineWidth(1.0f);
|
viewer->glLineWidth(1.0f);
|
||||||
if(index == selected_item || selected_items_list.contains(index))
|
if(index == selected_item || selected_items_list.contains(index))
|
||||||
{
|
{
|
||||||
|
|
@ -596,7 +592,7 @@ void Scene::renderPointScene(const QList<Scene_interface::Item_id> &items,
|
||||||
if(group ||item.visible())
|
if(group ||item.visible())
|
||||||
{
|
{
|
||||||
if(item.renderingMode() == Points && with_names) {
|
if(item.renderingMode() == Points && with_names) {
|
||||||
viewer->glClearDepth(1.0);
|
viewer->glClearDepthf(1.0);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -605,7 +601,7 @@ void Scene::renderPointScene(const QList<Scene_interface::Item_id> &items,
|
||||||
(item.renderingMode() == ShadedPoints))
|
(item.renderingMode() == ShadedPoints))
|
||||||
{
|
{
|
||||||
viewer->glDisable(GL_LIGHTING);
|
viewer->glDisable(GL_LIGHTING);
|
||||||
viewer->glPointSize(3.0f);
|
//viewer->glPointSize(3.0f);
|
||||||
viewer->glLineWidth(1.0f);
|
viewer->glLineWidth(1.0f);
|
||||||
item.drawPoints(viewer);
|
item.drawPoints(viewer);
|
||||||
}
|
}
|
||||||
|
|
@ -673,7 +669,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f);
|
0.0f);
|
||||||
viewer->glClearDepth(1);
|
viewer->glClearDepthf(1);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
//renderScene(children, viewer, picked_item_IDs, false, 0,false, NULL);
|
//renderScene(children, viewer, picked_item_IDs, false, 0,false, NULL);
|
||||||
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,false, NULL);
|
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,false, NULL);
|
||||||
|
|
@ -689,7 +685,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f);
|
0.0f);
|
||||||
viewer->glClearDepth(1);
|
viewer->glClearDepthf(1);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
// renderScene(children, viewer, picked_item_IDs, false, 0,true, NULL);
|
// renderScene(children, viewer, picked_item_IDs, false, 0,true, NULL);
|
||||||
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,true, NULL);
|
renderScene(opaque_items, viewer, picked_item_IDs, false, 0,true, NULL);
|
||||||
|
|
@ -709,7 +705,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f);
|
0.0f);
|
||||||
viewer->glClearDepth(1);
|
viewer->glClearDepthf(1);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
renderWireScene(children, viewer, picked_item_IDs, false);
|
renderWireScene(children, viewer, picked_item_IDs, false);
|
||||||
renderPointScene(children, viewer, picked_item_IDs, false);
|
renderPointScene(children, viewer, picked_item_IDs, false);
|
||||||
|
|
@ -728,7 +724,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f);
|
0.0f);
|
||||||
viewer->glClearDepth(1);
|
viewer->glClearDepthf(1);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
//renderScene(children, viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
|
//renderScene(children, viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
|
||||||
renderScene(opaque_items , viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
|
renderScene(opaque_items , viewer, picked_item_IDs, false, i, true, depth_test[i-1]);
|
||||||
|
|
@ -748,7 +744,7 @@ Scene::draw_aux(bool with_names, CGAL::Three::Viewer_interface* viewer)
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f);
|
0.0f);
|
||||||
viewer->glClearDepth(1);
|
viewer->glClearDepthf(1);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
// renderScene(children, viewer, picked_item_IDs, false, (int)viewer->total_pass()-1, false, depth_test[(int)viewer->total_pass()-2]);
|
// renderScene(children, viewer, picked_item_IDs, false, (int)viewer->total_pass()-1, false, depth_test[(int)viewer->total_pass()-2]);
|
||||||
renderScene(opaque_items , viewer, picked_item_IDs, false, (int)viewer->total_pass()-1, false, depth_test[(int)viewer->total_pass()-2]);
|
renderScene(opaque_items , viewer, picked_item_IDs, false, (int)viewer->total_pass()-1, false, depth_test[(int)viewer->total_pass()-2]);
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,7 @@ void Scene_group_item::renderChildren(Viewer_interface *viewer,
|
||||||
|
|
||||||
Q_FOREACH(Scene_interface::Item_id id, children){
|
Q_FOREACH(Scene_interface::Item_id id, children){
|
||||||
if(with_names) {
|
if(with_names) {
|
||||||
viewer->glClearDepth(1.0);
|
viewer->glClearDepthf(1.0f);
|
||||||
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
if(id == scene->mainSelectionIndex()|| scene->selectionIndices().contains(id))
|
if(id == scene->mainSelectionIndex()|| scene->selectionIndices().contains(id))
|
||||||
|
|
|
||||||
|
|
@ -461,17 +461,9 @@ void Viewer_impl::draw_aux(bool with_names, Viewer* viewer)
|
||||||
return;
|
return;
|
||||||
current_total_pass = viewer->inFastDrawing() ? total_pass/2 : total_pass;
|
current_total_pass = viewer->inFastDrawing() ? total_pass/2 : total_pass;
|
||||||
viewer->glLineWidth(1.0f);
|
viewer->glLineWidth(1.0f);
|
||||||
viewer->glPointSize(2.f);
|
//viewer->glPointSize(2.f);
|
||||||
viewer->glEnable(GL_POLYGON_OFFSET_FILL);
|
viewer->glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
viewer->glPolygonOffset(1.0f,1.0f);
|
viewer->glPolygonOffset(1.0f,1.0f);
|
||||||
viewer->glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
|
|
||||||
|
|
||||||
viewer->glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
|
|
||||||
|
|
||||||
if(twosides)
|
|
||||||
viewer->glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
|
|
||||||
else
|
|
||||||
viewer->glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
|
|
||||||
|
|
||||||
if(!with_names && antialiasing)
|
if(!with_names && antialiasing)
|
||||||
{
|
{
|
||||||
|
|
@ -493,7 +485,6 @@ void Viewer_impl::draw_aux(bool with_names, Viewer* viewer)
|
||||||
else
|
else
|
||||||
scene->draw(viewer);
|
scene->draw(viewer);
|
||||||
viewer->glDisable(GL_POLYGON_OFFSET_FILL);
|
viewer->glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
viewer->glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Viewer::inDrawWithNames() const {
|
bool Viewer::inDrawWithNames() const {
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public:
|
||||||
set_point_size(ps);
|
set_point_size(ps);
|
||||||
}
|
}
|
||||||
void set_point_size(GLfloat v) {
|
void set_point_size(GLfloat v) {
|
||||||
viewer->glPointSize(v);
|
//viewer->glPointSize(v);
|
||||||
}
|
}
|
||||||
}; // end class Point_size
|
}; // end class Point_size
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue