Your SlideShare is downloading. ×
3D Development with Qt                
Agenda    3D Concepts    OpenGL    Qt + OpenGL                   
     
     
We need an API           
     Graphics rendering API               
Current industry standard for 3D graphics              ( Hi DirectX! )                       
MultiPlatform       MultiLanguage    Hardware Independent       Open Standard               
More than 250 functions to produce         three­dimensional scenes    glColor, glVertex, glTranslate, glRotate ...       ...
Geometric Primitives              
     
CameraPhysical locationsProjection properties                            
LightingglEnable ( GL_LIGHTING )Lighting simulates how objects reflect lightMaterial compositionLight’s color and position...
Primitives are specified:glBegin(primitiveType);    …    …glEnd();Example:glBegin(GL_TRIANGLES);        glVertex3f( 0.0, 1...
Color        
The human eye has 3 types of light receptor                   cells glColor3f ( GLfloat red, GLfloat green, GLfloat blue )...
glBegin(GL_TRIANGLES);    // red    glColor3f( 1.0, 0.0, 0.0 );    glVertex3f( 0.0, 1.0, 0.0 );    // green    glColor3f( ...
ShadingSmooth:glShadeModel ( GL_SMOOTH  );    Flat:glShadeModel ( GL_FLAT  );                           
// Smooth shadingglShadeModel(GL_SMOOTH); glBegin(GL_TRIANGLE_STRIP);        glColor3( 0.0, 0.5, 0.0 );        glVertex3( ...
// Flat shadingglShadeModel(GL_FLAT); glBegin(GL_TRIANGLE_STRIP);        glColor3( 0.0, 0.5, 0.0 );        glVertex3( ­1.0...
      glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR );                                    
     
+    Qt OpenGL module              
#include <QGLWidget>class GLWidget : public QGLWidget{    Q_OBJECTpublic:    GLWidget( QWidget *parent=0 );    ~GLWidget()...
    void initializeGL();    void resizeGL( int width, int height );    void paintGL();                        
void GLWidget::initializeGL()    {        // Smooth shading        glShadeModel( GL_SMOOTH );         // Background color ...
void GLWidget::resizeGL( int width, int height )     {               if ( height == 0 )            height = 1;        // R...
void GLWidget::paintGL()    {        glClear ( GL_COLOR_BUFFER_BIT );        // Reset the drawing perspective        glLoa...
void GLWidget::drawtriangle(){    glBegin ( GL_TRIANGLES );        glColor3f ( 1.0,  0.0,  0.0 );        glVertex3f ( 5.0,...
Demo Animation           
Demo Rotation            
Thanks    Ronny Yabar Aizcorbe    ronnycontacto@gmail.com      ronnyml.wordpress.com                
Upcoming SlideShare
Loading in...5
×

Development with OpenGL and Qt

6,668

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,668
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Development with OpenGL and Qt"

  1. 1. 3D Development with Qt   
  2. 2. Agenda 3D Concepts OpenGL Qt + OpenGL   
  3. 3.    
  4. 4.    
  5. 5. We need an API   
  6. 6.   Graphics rendering API  
  7. 7. Current industry standard for 3D graphics  ( Hi DirectX! )     
  8. 8. MultiPlatform MultiLanguage Hardware Independent Open Standard   
  9. 9. More than 250 functions to produce  three­dimensional scenes glColor, glVertex, glTranslate, glRotate ...   
  10. 10. Geometric Primitives   
  11. 11.    
  12. 12. CameraPhysical locationsProjection properties    
  13. 13. LightingglEnable ( GL_LIGHTING )Lighting simulates how objects reflect lightMaterial compositionLight’s color and positionTwo sidedGLfloat mred[4]= {1,0,0,1};glMaterialfv(GL_FRONT, GL_AMBIENT, mred);    
  14. 14. Primitives are specified:glBegin(primitiveType);    …    …glEnd();Example:glBegin(GL_TRIANGLES);        glVertex3f( 0.0, 1.0, 0.0 );    glVertex3f( ­1.0, ­1.0, 0.0 );    glVertex3f( 1.0, ­1.0, 0.0 );glEnd();    
  15. 15. Color   
  16. 16. The human eye has 3 types of light receptor  cells glColor3f ( GLfloat red, GLfloat green, GLfloat blue );   
  17. 17. glBegin(GL_TRIANGLES);    // red    glColor3f( 1.0, 0.0, 0.0 );    glVertex3f( 0.0, 1.0, 0.0 );    // green    glColor3f( 0.0, 1.0, 0.0 );    glVertex3f( ­1.0, ­1.0, 0.0 );    // blue    glColor3f( 0.0, 0.0, 1.0 );    glVertex3f( 1.0, ­1.0, 0.0 );glEnd();      
  18. 18. ShadingSmooth:glShadeModel ( GL_SMOOTH  );    Flat:glShadeModel ( GL_FLAT  );      
  19. 19. // Smooth shadingglShadeModel(GL_SMOOTH); glBegin(GL_TRIANGLE_STRIP);        glColor3( 0.0, 0.5, 0.0 );        glVertex3( ­1.0, ­0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 1.0, ­0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 0.0, 0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 1.5, 0.0, ­5.0 );        glColor3( 0.0, 0.0, 1.0 );        glVertex3( 2.0, ­1.5, ­5.0 );          glEnd();
  20. 20. // Flat shadingglShadeModel(GL_FLAT); glBegin(GL_TRIANGLE_STRIP);        glColor3( 0.0, 0.5, 0.0 );        glVertex3( ­1.0, ­0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 1.0, ­0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 0.0, 0.5, ­5.0 );        glColor3( 1.0, 0.0, 0.0 );        glVertex3( 1.5, 0.0, ­5.0 );        glColor3( 0.0, 0.0, 1.0 );        glVertex3( 2.0, ­1.5, ­5.0 );          glEnd();
  21. 21.    glTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR );  
  22. 22.    
  23. 23. + Qt OpenGL module   
  24. 24. #include <QGLWidget>class GLWidget : public QGLWidget{    Q_OBJECTpublic:    GLWidget( QWidget *parent=0 );    ~GLWidget();    ...protected:    void initializeGL();    void resizeGL( int width, int height );    void paintGL();private:    ...   };
  25. 25.     void initializeGL();    void resizeGL( int width, int height );    void paintGL();    
  26. 26. void GLWidget::initializeGL() {     // Smooth shading     glShadeModel( GL_SMOOTH );      // Background color     glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );  ­>    qglClearColor( Qt::black );     // Depth buffer setup     glClearDepth( 1.0f );     // Enable depth testing     glEnable( GL_DEPTH_TEST );     // Set type of depth test     glDepthFunc( GL_LEQUAL );    }
  27. 27. void GLWidget::resizeGL( int width, int height )  {         if ( height == 0 )         height = 1;     // Reset current viewport     GlViewport( 0, 0, width, height );      // Select projection matrix     GlMatrixMode( GL_PROJECTION );           // Reset projection matrix     glLoadIdentity();      // Select modelview matrix     GlMatrixMode( GL_MODELVIEW );       // Reset modelview matrix       glLoadIdentity(); 
  28. 28. void GLWidget::paintGL() {     glClear ( GL_COLOR_BUFFER_BIT );     // Reset the drawing perspective     glLoadIdentity();      // triangle     glBegin (GL_TRIANGLES);         GlColor3f ( 1.0,  0.0,  0.0 );         glVertex3f ( 5.0,  5.0, 0.0 );         glColor3f ( 0.0,  1.0, 0.0 );         glVertex3f ( 25.0, 5.0, 0.0 );         glColor3f ( 0.0,  0.0, 1.0 );         GlVertex3f ( 5.0,  25.0, 0.0 );      glEnd();   }
  29. 29. void GLWidget::drawtriangle(){    glBegin ( GL_TRIANGLES );        glColor3f ( 1.0,  0.0,  0.0 );        glVertex3f ( 5.0,  5.0, 0.0 );           glColor3f ( 0.0,  1.0, 0.0 );        glVertex3f ( 25.0, 5.0, 0.0 );           glColor3f ( 0.0,  0.0, 1.0 );        glVertex3f ( 5.0,  25.0, 0.0 );    glEnd();}void GLWidget::paintGL(){    glClear ( GL_COLOR_BUFFER_BIT );    // Reset the drawing perspective    glLoadIdentity();         drawTriangle();
  30. 30. Demo Animation   
  31. 31. Demo Rotation   
  32. 32. Thanks Ronny Yabar Aizcorbe ronnycontacto@gmail.com ronnyml.wordpress.com   

×