青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

Build 3D Environment

Posted on 2011-11-20 15:22 eryar 閱讀(2091) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

利用OpenGL創(chuàng)建一個3D空間,便于觀察三維的曲面。程序?qū)崿F(xiàn):

1. 設(shè)置投影使用 glOrtho(),而不是gluOrtho2D();

2. 增加光照效果;

3. 畫出三維坐標(biāo)軸,且可通過方向鍵來旋轉(zhuǎn)視圖;

源程序有三個文件:Main.cpp、CordinateAxis.h、CordinateAxis.cpp;其中類CCordinateAxis用來繪坐標(biāo)軸。

程序代碼如下:

   1:  // Main.cpp
   2:  // OpenGL 3D Environment
   3:   
   4:  #include <gl\glut.h>
   5:  #include <iostream>
   6:  #include "CordinateAxis.h"
   7:  using namespace std;
   8:   
   9:  void    Initialize(void);
  10:  void    DrawScene(void);
  11:  void    myReshape(GLsizei w, GLsizei h);
  12:  void    myKeyFunc(GLubyte key, GLint x, GLint y);
  13:  void    mySpecFunc(GLint  key, GLint x, GLint y);
  14:   
  15:  GLint    leftRight    =    0;
  16:  GLint    upDown        =    0;
  17:   
  18:  void main(int argc, char* argv[]) {
  19:      glutInit(&argc, argv);                // Initialize GLUT
  20:      glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);    // Set display mode
  21:      glutInitWindowPosition(50,100);            // Set top-left display window position
  22:      glutInitWindowSize(400, 300);            // set display window width and height
  23:      glutCreateWindow("OpenGL 3D");            // Create display window
  24:   
  25:      Initialize();                    // Execute initialization procedure
  26:      glutDisplayFunc(DrawScene);            // Send graphics to display window
  27:      glutReshapeFunc(myReshape);            // 
  28:      glutKeyboardFunc(myKeyFunc);
  29:      glutSpecialFunc(mySpecFunc);
  30:   
  31:      glutMainLoop();                    // Display everything and wait
  32:  }
  33:   
  34:  void    Initialize(void) {
  35:      glClearColor(0.0, 0.0, 0.0, 0.0);        // Set Display-window color to white
  36:      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  37:      glMatrixMode(GL_PROJECTION);            // Set projection parameters
  38:      glLoadIdentity();
  39:   
  40:      // Set light
  41:      GLfloat ambientLight[]  = {1.0f, 1.0f, 1.0f, 1.0f};
  42:      GLfloat diffuseLight[]  = {1.0f, 0.2f, 1.0f, 1.0f};
  43:      GLfloat specularLight[] = {1.0f, 1.0f, 1.0f, 1.0f};
  44:      GLfloat shininess[]     = {90.0f};
  45:      GLfloat lightPos[]      = {800.0f, 800.0f, 900.0f, 1.0f};
  46:      
  47:      // Setup and enable light 0
  48:  //     glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
  49:  //     glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
  50:  //     glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
  51:   
  52:      glMaterialfv(GL_FRONT, GL_AMBIENT, ambientLight);
  53:      glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseLight);
  54:      glMaterialfv(GL_FRONT, GL_SPECULAR, specularLight);
  55:      glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
  56:      glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
  57:   
  58:      // Enable lighting
  59:      glEnable(GL_LIGHTING);
  60:      glEnable(GL_LIGHT0);
  61:      glDepthFunc(GL_LESS);
  62:      glEnable(GL_DEPTH_TEST);
  63:      
  64:      // Enable color tracking
  65:      glEnable(GL_COLOR_MATERIAL);    
  66:   
  67:      //glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
  68:  } // Initialize
  69:   
  70:  void    myReshape(GLsizei w, GLsizei h) {
  71:      // Reset viewport and projection parameter
  72:      glViewport(0, 0, w, h);
  73:      glMatrixMode(GL_PROJECTION);
  74:      glLoadIdentity();
  75:      glOrtho(0, w, 0, h, -500, 500);
  76:      glMatrixMode(GL_MODELVIEW);
  77:  } // myReshape
  78:   
  79:  void    myKeyFunc(GLubyte key, GLint x, GLint y) {
  80:      cout<<key<<x<<y<<endl;
  81:  } // myKeyFunc
  82:   
  83:  void    mySpecFunc(GLint  key, GLint x, GLint y) {
  84:   
  85:      switch(key) {
  86:      case    GLUT_KEY_LEFT:
  87:          leftRight    -=    1;
  88:          break;
  89:   
  90:      case    GLUT_KEY_RIGHT:
  91:          leftRight    +=    1;
  92:          break;
  93:   
  94:      case    GLUT_KEY_UP:
  95:          upDown        -=    1;
  96:          break;
  97:   
  98:      case    GLUT_KEY_DOWN:
  99:          upDown        +=    1;
 100:          break;
 101:   
 102:      default:
 103:          glutPostRedisplay();
 104:      }
 105:   
 106:      glutPostRedisplay();
 107:  } // mySpecFunc
 108:   
 109:  void    DrawScene(void) {
 110:      glClear(GL_COLOR_BUFFER_BIT);            // Clear display window
 111:      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 112:      glEnable(GL_AUTO_NORMAL);
 113:   
 114:      glPushMatrix();
 115:   
 116:      glRotatef((GLfloat)leftRight, 0.0, 1.0, 0.0);
 117:      glRotatef((GLfloat)upDown, 1.0, 0.0, 0.0);
 118:   
 119:      // 
 120:      glTranslatef(50.0, 50.0, 0.0);
 121:      CCordinateAxis  axis;
 122:      axis.SetAxisPosition(0, 0, 0);
 123:      axis.SetAxisSize(100);
 124:      axis.Show();
 125:   
 126:      glTranslatef(100.0f, 100.0f, 100.0f);
 127:      glColor3f(1.0f, 0.8f, 0.0f);
 128:      //glutWireCube(100.0);
 129:      glutSolidTeapot(80);
 130:   
 131:      glPopMatrix();
 132:   
 133:      glFlush();                    // Process all OpenGL routines as quickly possible
 134:  } // DrawScene
   1:  // CordinateAxis.h: interface for the CCordinateAxis class.
   2:  //
   3:  //////////////////////////////////////////////////////////////////////
   4:   
   5:  #ifndef _CORDINATEAXIS_H_
   6:  #define _CORDINATEAXIS_H_
   7:   
   8:  #pragma once
   9:   
  10:  #include <GL/glut.h>
  11:  #include <iostream>
  12:  using namespace std;
  13:   
  14:  class CCordinateAxis  
  15:  {
  16:  public:
  17:      CCordinateAxis();
  18:      CCordinateAxis(double x, double y, double z);
  19:      virtual ~CCordinateAxis();
  20:   
  21:      void    SetAxisPosition(double x, double y, double z);
  22:      void    SetAxisSize(double size);
  23:      void    Show(void);
  24:   
  25:  private:
  26:      double  m_xPos;
  27:      double  m_yPos;
  28:      double  m_zPos;
  29:   
  30:      double  m_Size;
  31:  };
  32:   
  33:  #endif // _CORDINATEAXIS_H_
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

   1:  // CordinateAxis.cpp: implementation of the CCordinateAxis class.
   2:  //
   3:  //////////////////////////////////////////////////////////////////////
   4:   
   5:  #include "CordinateAxis.h"
   6:   
   7:  CCordinateAxis::CCordinateAxis()
   8:  {
   9:      m_xPos  = 0;
  10:      m_yPos  = 0;
  11:      m_zPos  = 0;
  12:   
  13:      m_Size  = 80;
  14:  }
  15:   
  16:  CCordinateAxis::CCordinateAxis( double x, double y, double z )
  17:  {
  18:      m_xPos  = x;
  19:      m_yPos  = y;
  20:      m_zPos  = z;
  21:  }
  22:   
  23:  CCordinateAxis::~CCordinateAxis()
  24:  {
  25:   
  26:  }
  27:   
  28:  void CCordinateAxis::SetAxisPosition( double x, double y, double z )
  29:  {
  30:      m_xPos  = x;
  31:      m_yPos  = y;
  32:      m_zPos  = z;
  33:  }
  34:   
  35:  void CCordinateAxis::SetAxisSize( double size )
  36:  {
  37:      m_Size  = size;
  38:  }
  39:   
  40:  void CCordinateAxis::Show( void )
  41:  {
  42:      GLdouble    radius  = m_Size / 12;
  43:      GLdouble    height  = radius * 2.2;
  44:   
  45:      glPushMatrix();
  46:      glTranslatef(m_xPos, m_yPos, m_zPos);
  47:   
  48:      glBegin(GL_LINES);
  49:          glVertex3f(0, 0, 0);
  50:          glVertex3f(m_Size, 0, 0);
  51:   
  52:          glVertex3f(0, 0, 0);
  53:          glVertex3f(0, m_Size, 0);
  54:   
  55:          glVertex3f(0, 0, 0);
  56:          glVertex3f(0, 0, m_Size);
  57:      glEnd();
  58:   
  59:      glutSolidSphere(radius/2, 10, 10);
  60:   
  61:      // x axis arrow
  62:      glTranslatef(m_Size, 0, 0);
  63:      glRotatef(90, 0, 1, 0);
  64:      glColor3f(1, 0, 0);
  65:      glutSolidCone(radius, height, 10, 10);
  66:   
  67:      // y axis arrow
  68:      glTranslatef(0, m_Size, -m_Size);
  69:      glRotatef(-90, 1, 0, 0);
  70:      glColor3f(0, 1, 0);
  71:      glutSolidCone(radius, height, 10, 10);
  72:   
  73:      // z axis arrow
  74:      glTranslatef(-m_Size, 0, -m_Size);
  75:      glRotatef(-90, 0, 1, 0);
  76:      glColor3f(0, 0, 1);
  77:      glutSolidCone(radius, height, 10, 10);
  78:   
  79:      glPopMatrix();
  80:  }
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

 

OpenGL 3D

程序效果圖

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲美女毛片| 国产日韩精品久久久| 亚洲手机在线| 亚洲免费观看在线观看| 91久久综合| 亚洲精品久久久久久久久| 亚洲经典视频在线观看| 99v久久综合狠狠综合久久| 夜夜嗨网站十八久久| 亚洲一区二区三区四区视频| 欧美一级日韩一级| 久久亚洲精品一区| 欧美日韩三级| 国产一区二区三区四区老人| 亚洲成在人线av| 一区二区欧美激情| 久久久久久久网站| 亚洲国产欧美一区二区三区同亚洲| 99精品视频免费| 欧美一级视频| 男女视频一区二区| 国产精品免费视频xxxx| 亚洲成色777777在线观看影院| 亚洲视频在线一区观看| 久久深夜福利免费观看| 亚洲精品一区二区三区不| 欧美一区二区精品| 欧美日韩午夜剧场| 在线成人小视频| 香蕉久久夜色精品国产使用方法 | 136国产福利精品导航网址应用| 日韩视频免费| 美女999久久久精品视频| 一级日韩一区在线观看| 久久色在线播放| 国产乱码精品一区二区三区av| 亚洲国产欧美国产综合一区| 午夜一区二区三区不卡视频| 欧美黄在线观看| 久久激情五月激情| 国产精品成人免费视频| 日韩视频一区二区三区| 免费欧美日韩| 久久夜色精品国产噜噜av| 国产精品永久入口久久久| 亚洲天堂av电影| 亚洲精品美女91| 免费成人av在线看| 国内精品视频一区| 久久夜色精品国产亚洲aⅴ| 亚洲欧美日韩在线不卡| 国产精品你懂的在线| 亚洲欧美国产制服动漫| 亚洲精品视频在线观看免费| 欧美福利一区| 免费观看一区| 激情校园亚洲| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美亚洲自偷自偷| 国产一区91精品张津瑜| 校园激情久久| 午夜国产精品视频| 国产欧美日韩综合精品二区| 亚洲欧美一区二区激情| 亚洲一区二区在线看| 国产精品美女主播| 羞羞答答国产精品www一本| 在线亚洲成人| 国产欧美日韩一区二区三区在线观看| 亚洲欧美国产va在线影院| 夜夜嗨av色一区二区不卡| 欧美亚一区二区| 欧美亚洲一区| 久久久久久久一区| 亚洲精品国产精品国自产在线 | 国语自产精品视频在线看8查询8| 久久国产欧美| 免费观看久久久4p| 亚洲午夜伦理| 久久国产夜色精品鲁鲁99| 亚洲高清在线观看| 亚洲裸体俱乐部裸体舞表演av| 国产精品人人爽人人做我的可爱| 性欧美videos另类喷潮| 久久国产高清| 一区二区日韩| 欧美亚洲日本国产| 亚洲精品国产日韩| 亚洲主播在线播放| 亚洲欧洲一区二区三区在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一级黄色| 狠狠色综合色综合网络| 亚洲精品视频一区二区三区| 国产美女精品| 亚洲精品偷拍| 一区二区三区在线免费视频| 99视频超级精品| 亚洲国产成人不卡| 亚洲欧美激情一区二区| 亚洲精品影视在线观看| 性欧美1819性猛交| 亚洲午夜羞羞片| 蜜臀va亚洲va欧美va天堂| 欧美亚洲免费| 欧美精品日韩一区| 老司机凹凸av亚洲导航| 国产精品福利网站| 亚洲大片一区二区三区| 亚洲视频1区| 亚洲另类在线一区| 久久精品欧美日韩| 午夜精品一区二区在线观看| 欧美不卡一区| 久久久久久久网| 国产伦精品一区二区三区照片91| 亚洲高清资源| 在线免费观看成人网| 亚洲免费在线观看| 一本色道久久88亚洲综合88| 玖玖玖免费嫩草在线影院一区| 欧美一区二区三区在线免费观看| 欧美日韩国产综合视频在线观看 | 亚洲网址在线| 欧美久久婷婷综合色| 老**午夜毛片一区二区三区| 国产精品综合色区在线观看| 一本色道久久88综合日韩精品| 91久久亚洲| 欧美成人午夜激情| 欧美高清视频一区二区三区在线观看| 狠狠色丁香婷婷综合| 欧美在线中文字幕| 久久手机免费观看| 在线观看亚洲视频| 久久综合亚州| 亚洲国产精品123| 亚洲精品在线电影| 欧美剧在线观看| 亚洲美女在线观看| 午夜精品国产| 国产欧美日韩高清| 亚洲欧美国产高清| 久久精品中文字幕一区二区三区| 国产日韩在线播放| 久久久人成影片一区二区三区 | 久久精品女人天堂| 国产亚洲欧美aaaa| 久久久久一区二区三区四区| 欧美激情一二三区| 在线视频亚洲欧美| 国产精品嫩草影院一区二区| 欧美一区二区三区免费看| 久久资源在线| 亚洲精品视频一区| 国产精品高潮粉嫩av| 久久精品国产999大香线蕉| 亚洲成在线观看| 亚洲一区二区三区在线| 国产女同一区二区| 鲁鲁狠狠狠7777一区二区| 亚洲欧洲精品一区二区三区不卡| 亚洲欧美日韩国产精品| 在线观看日韩| 欧美精品成人| 欧美一级久久| 亚洲黄色av| 欧美亚洲日本一区| 在线国产日韩| 国产精品久久久久久影院8一贰佰| 欧美一区影院| 亚洲美女在线视频| 老**午夜毛片一区二区三区| 欧美特黄视频| 久久久国产精品亚洲一区 | 一区二区三区成人| 国产伪娘ts一区| 欧美日韩一区二区三区在线观看免| 亚洲欧美日韩国产精品| 亚洲国产岛国毛片在线| 久久久久久久久久久久久久一区 | 欧美在线亚洲| 亚洲精品视频在线看| 国产午夜精品美女视频明星a级| 麻豆av一区二区三区久久| 亚洲一区二区三| 亚洲美女区一区| 亚洲丁香婷深爱综合| 久久久久久一区二区| 亚洲欧美综合v| 一区二区三区欧美成人| 亚洲激情在线观看| 在线看日韩欧美| 激情久久影院| 国产综合欧美在线看| 国产精品伦一区| 欧美日本在线视频| 欧美成人午夜| 欧美极品欧美精品欧美视频| 久久综合网hezyo|