From: dmv Date: Mon, 29 Dec 2008 11:27:22 +0000 (+0000) Subject: IPAL20695 Qt4 porting. Changing values of parameters in “Gauss Points” dialog... X-Git-Tag: before_mergefrom_BR_V5_IMP_P8_22Jan09~16 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2e707623bf13551f7bc4f9544ac76a585603d1f6;p=modules%2Fvisu.git IPAL20695 Qt4 porting. Changing values of parameters in “Gauss Points” dialog box doesn’t influence on their presentation in 3D Viewer --- diff --git a/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx b/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx index e49c64d2..fd54f6e0 100755 --- a/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx +++ b/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx @@ -483,12 +483,10 @@ float ViewToDisplay( vtkRenderer* theRenderer ) // void VISU_OpenGLPointSpriteMapper::RenderPiece(vtkRenderer *ren, vtkActor *act) { - bool isUseThisMapper = !( this->UseOpenGLMapper || - this->PrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere ); + bool isUseThisMapper = this->PrimitiveType != VISU_OpenGLPointSpriteMapper::GeomSphere; if( isUseThisMapper ) - if( !this->InitExtensions() ) - return; + this->InitExtensions(); if( !isUseThisMapper ) { @@ -964,8 +962,7 @@ void DrawCellsPoints( vtkPolyData *theInput, int VISU_OpenGLPointSpriteMapper::Draw(vtkRenderer *theRenderer, vtkActor *theActor) { - if( this->UseOpenGLMapper || - this->PrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere ) + if( this->PrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere ) return MAPPER_SUPERCLASS::Draw( theRenderer, theActor ); vtkUnsignedCharArray *colors = NULL; @@ -1041,39 +1038,52 @@ int VISU_OpenGLPointSpriteMapper::Draw(vtkRenderer *theRenderer, vtkActor *theAc delete aColorFunctor; } - GLuint aBufferObjectID = 0; - vglGenBuffersARB( 1, &aBufferObjectID ); - vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); - - int anArrayObjectSize = sizeof( TVertex ) * aTotalConnectivitySize; - vglBufferDataARB( GL_ARRAY_BUFFER_ARB, anArrayObjectSize, aVertexArr, GL_STATIC_DRAW_ARB ); - - delete [] aVertexArr; - - vglBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 ); - vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); - - glColorPointer( 4, GL_FLOAT, sizeof(TVertex), (void*)0 ); - glVertexPointer( 3, GL_FLOAT, sizeof(TVertex), (void*)(4*sizeof(GLfloat)) ); - - glEnableClientState( GL_VERTEX_ARRAY ); - glEnableClientState( GL_COLOR_ARRAY ); - - glDrawArrays( GL_POINTS, 0, aTotalConnectivitySize ); - - glDisableClientState( GL_COLOR_ARRAY ); - glDisableClientState( GL_VERTEX_ARRAY ); - - vglDeleteBuffersARB( 1, &aBufferObjectID ); + if( this->ExtensionsInitialized ) { + GLuint aBufferObjectID = 0; + vglGenBuffersARB( 1, &aBufferObjectID ); + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); + + int anArrayObjectSize = sizeof( TVertex ) * aTotalConnectivitySize; + vglBufferDataARB( GL_ARRAY_BUFFER_ARB, anArrayObjectSize, aVertexArr, GL_STATIC_DRAW_ARB ); + + delete [] aVertexArr; + + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 ); + vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID ); + + glColorPointer( 4, GL_FLOAT, sizeof(TVertex), (void*)0 ); + glVertexPointer( 3, GL_FLOAT, sizeof(TVertex), (void*)(4*sizeof(GLfloat)) ); + + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_COLOR_ARRAY ); + + glDrawArrays( GL_POINTS, 0, aTotalConnectivitySize ); + + glDisableClientState( GL_COLOR_ARRAY ); + glDisableClientState( GL_VERTEX_ARRAY ); + + vglDeleteBuffersARB( 1, &aBufferObjectID ); + } else { // there are not extensions + glColorPointer( 4, GL_FLOAT, sizeof(TVertex), aVertexArr ); + glVertexPointer( 3, GL_FLOAT, sizeof(TVertex), + (void*)((GLfloat*)((void*)(aVertexArr)) + 4)); + + glEnableClientState( GL_VERTEX_ARRAY ); + glEnableClientState( GL_COLOR_ARRAY ); + + glDrawArrays( GL_POINTS, 0, aTotalConnectivitySize ); + + glDisableClientState( GL_COLOR_ARRAY ); + glDisableClientState( GL_VERTEX_ARRAY ); + + delete [] aVertexArr; + } } input->GetVerts()->GetNumberOfCells() + input->GetLines()->GetNumberOfCells() + input->GetPolys()->GetNumberOfCells() + input->GetStrips()->GetNumberOfCells(); - - - } diff --git a/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx b/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx index e05b0c14..8c12f0bd 100644 --- a/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx +++ b/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx @@ -928,6 +928,13 @@ void VisuGUI_GaussPointsDlg::initFromPrsObject( VISU::ColoredPrs3d_i* thePrs, mySizeBox->setIncrement( myPrsCopy->GetMagnificationIncrement() ); mySizeBox->setColor( myPrsCopy->GetQColor() ); + //Disable Size controls if there are no OpenGL extensions + char* ext = (char*)glGetString( GL_EXTENSIONS ); + if( strstr( ext, "GL_ARB_point_sprite" ) == NULL || + strstr( ext, "GL_ARB_shader_objects" ) == NULL || + strstr( ext, "GL_ARB_vertex_buffer_object" ) == NULL ) + mySizeBox->enableSizeControls(false); + if( !theInit ) return; diff --git a/src/VVTK/VVTK_SizeBox.cxx b/src/VVTK/VVTK_SizeBox.cxx index 06d7b68d..7d040131 100644 --- a/src/VVTK/VVTK_SizeBox.cxx +++ b/src/VVTK/VVTK_SizeBox.cxx @@ -351,6 +351,15 @@ void VVTK_SizeBox::setColor( const QColor& theColor ) //myColorButton->setPaletteBackgroundColor( theColor ); } +void VVTK_SizeBox::enableSizeControls( bool enabled ) +{ + myMagnificationSpinBox->setEnabled( enabled ); + myMaxSizeSpinBox->setEnabled( enabled ); + myMinSizeSpinBox->setEnabled( enabled ); + myIncrementSpinBox->setEnabled( enabled ); + myGeomSizeSpinBox->setEnabled( enabled ); +} + /*void VVTK_SizeBox::onColorButtonPressed() { QPalette aPalette( myColorButton->palette() ); diff --git a/src/VVTK/VVTK_SizeBox.h b/src/VVTK/VVTK_SizeBox.h index bb1f0737..296ff51d 100644 --- a/src/VVTK/VVTK_SizeBox.h +++ b/src/VVTK/VVTK_SizeBox.h @@ -80,6 +80,8 @@ public: QColor getColor() const; void setColor( const QColor& ); + void enableSizeControls( bool enabled ); + protected slots: void onToggleResults(); void onToggleGeometry();