From: dmv Date: Mon, 12 Jan 2009 07:01:00 +0000 (+0000) Subject: IPAL20695 Changing values of parameters in “Gauss Points” dialog box doesnâ€... X-Git-Tag: V4_1_0_maintainance_20090206~19 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1d71f8c10e34bc5413cdb3e012f4db1bdc043813;p=modules%2Fvisu.git IPAL20695 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 2bf39832..3b829399 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,53 @@ 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 no initialized 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 5088f886..3dceca15 100644 --- a/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx +++ b/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx @@ -875,6 +875,12 @@ void VisuGUI_GaussPointsDlg::initFromPrsObject( VISU::ColoredPrs3d_i* thePrs, if( !theInit ) return; + 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); + myInputPane->initFromPrsObject( myPrsCopy ); myTabBox->setCurrentPage( 0 ); } diff --git a/src/VVTK/VVTK_SizeBox.cxx b/src/VVTK/VVTK_SizeBox.cxx index 2de208ce..f6259b0b 100644 --- a/src/VVTK/VVTK_SizeBox.cxx +++ b/src/VVTK/VVTK_SizeBox.cxx @@ -345,3 +345,12 @@ void VVTK_SizeBox::onColorButtonPressed() if( aColor.isValid() ) myColorButton->setPaletteBackgroundColor( aColor ); } + +void VVTK_SizeBox::enableSizeControls( bool enabled ) +{ + myMagnificationSpinBox->setEnabled( enabled ); + myMaxSizeSpinBox->setEnabled( enabled ); + myMinSizeSpinBox->setEnabled( enabled ); + myIncrementSpinBox->setEnabled( enabled ); + myGeomSizeSpinBox->setEnabled( enabled ); +} diff --git a/src/VVTK/VVTK_SizeBox.h b/src/VVTK/VVTK_SizeBox.h index 70284dc7..23099d46 100644 --- a/src/VVTK/VVTK_SizeBox.h +++ b/src/VVTK/VVTK_SizeBox.h @@ -79,6 +79,8 @@ public: QColor getColor() const; void setColor( const QColor& ); + void enableSizeControls( bool ); + protected slots: void onToggleResults(); void onToggleGeometry();