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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

Build 3D Environment

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

利用OpenGL創建一個3D空間,便于觀察三維的曲面。程序實現:

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

2. 增加光照效果;

3. 畫出三維坐標軸,且可通過方向鍵來旋轉視圖;

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

程序代碼如下:

   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>
            亚洲电影有码| 国产一区二区三区视频在线观看| 国产一区二区黄色| 久久久久久电影| 久久不射中文字幕| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久国产精品久久国产精品| 国产真实乱偷精品视频免| 麻豆国产精品777777在线| 久久色在线播放| 亚洲作爱视频| 亚洲欧美欧美一区二区三区| 韩日欧美一区二区| 亚洲欧洲一区二区三区久久| 国产精品国产一区二区| 久久久噜噜噜久久中文字幕色伊伊| 久久精品一区二区三区不卡牛牛| 亚洲精品一区久久久久久| 亚洲一区成人| 亚洲黄色免费电影| 亚洲午夜在线视频| 亚洲黄色片网站| 亚洲专区国产精品| 亚洲国产mv| 一区二区日韩| 亚洲国产天堂久久国产91| 亚洲国产精品久久久久婷婷老年| 欧美aaaaaaaa牛牛影院| 美女脱光内衣内裤视频久久影院| 欧美国产视频在线| 欧美在线综合视频| 欧美激情免费在线| 久久九九99| 国产精品二区在线观看| 欧美高清在线观看| 国产欧美一区二区精品婷婷| 亚洲高清网站| 怡红院av一区二区三区| 亚洲视屏一区| 99视频一区二区| 久久中文字幕导航| 久久精品国产免费| 国产精品久久久久9999| 亚洲国产一区二区精品专区| 国语自产精品视频在线看一大j8| 一区二区欧美日韩| 亚洲精品美女91| 久久精品一区二区三区不卡牛牛| 亚洲最新中文字幕| 国产女主播视频一区二区| 亚洲国产影院| 亚洲第一中文字幕在线观看| 欧美一级久久| 欧美一区国产二区| 国产精品区一区| 亚洲视频一二| 亚洲一区在线免费| 国产精品二区二区三区| 中文国产一区| 性欧美xxxx视频在线观看| 欧美日韩精品一区二区天天拍小说| 欧美激情四色 | 国产精品揄拍一区二区| 一区二区三区免费观看| 91久久久久久| 午夜精品视频在线| 久久精品欧美| 精品成人国产| 久久综合色一综合色88| 欧美激情第3页| 日韩视频精品在线| 欧美色图五月天| 亚洲综合成人在线| 久久久久成人精品| 悠悠资源网久久精品| 久久综合五月| 亚洲欧洲视频在线| 午夜在线成人av| 狠狠色伊人亚洲综合网站色| 久久影院午夜论| 欧美高清在线播放| 亚洲一区二区三区国产| 国产精品一区二区你懂得| 欧美在线视频观看免费网站| 麻豆精品网站| 一本色道久久综合亚洲二区三区| 欧美三区不卡| 久久国产一区二区| 最新日韩中文字幕| 亚洲一区二区精品| 韩国一区电影| 欧美激情成人在线| 亚洲天堂免费观看| 你懂的国产精品| 亚洲视频久久| 国内久久婷婷综合| 欧美日本在线视频| 性欧美暴力猛交69hd| 欧美大片在线看| 亚洲欧美视频在线观看| 狠狠噜噜久久| 国产精品家庭影院| 久久久伊人欧美| 亚洲性图久久| 亚洲高清一二三区| 久久黄色小说| 一本色道久久综合亚洲精品婷婷 | 午夜欧美电影在线观看| 国产亚洲欧洲997久久综合| 久久综合久久美利坚合众国| 夜夜精品视频| 欧美r片在线| 欧美一级一区| 一本色道88久久加勒比精品 | 欧美黄色影院| 久久久久国产精品一区三寸| 99精品国产99久久久久久福利| 久久久久久久999| 欧美在线观看一区| 欧美亚一区二区| 在线亚洲自拍| 欧美激情在线播放| 快she精品国产999| 欧美一区二区黄| 亚洲一区二区三区影院| 亚洲人成啪啪网站| 在线看欧美日韩| 国产一区二区欧美日韩| 亚洲一区二区三| 亚洲区一区二区三区| 狠狠久久婷婷| 国内精品久久久久久 | 久久精精品视频| 亚洲欧美国产视频| 亚洲天堂成人| 亚洲午夜国产一区99re久久| 99国产精品久久久久久久成人热| 欧美激情网站在线观看| 欧美a级片网站| 欧美www视频在线观看| 蜜桃精品一区二区三区| 免费国产一区二区| 男人的天堂成人在线| 免费亚洲一区二区| 欧美大胆a视频| 欧美激情aⅴ一区二区三区| 欧美xart系列高清| 亚洲国产成人精品久久久国产成人一区| 可以免费看不卡的av网站| 老司机精品视频一区二区三区| 久久免费精品日本久久中文字幕| 欧美在线视频全部完| 久久九九久精品国产免费直播| 久久精品一区蜜桃臀影院| 欧美在线视频免费| 久久尤物电影视频在线观看| 久久天堂精品| 亚洲国产综合视频在线观看| 亚洲欧洲在线视频| 亚洲毛片播放| 午夜国产精品视频免费体验区| 欧美在线啊v| 你懂的亚洲视频| 欧美日韩视频在线| 国产精品影音先锋| 在线播放一区| 中文高清一区| 久久精品国产一区二区三区| 欧美88av| 亚洲网站在线| 久久久久国色av免费看影院| 欧美精品国产| 国产手机视频一区二区| 亚洲国产成人精品女人久久久| 一区二区高清在线| 久久国产精品亚洲va麻豆| 欧美二区视频| 亚洲专区一区| 欧美国产欧美综合 | 玖玖精品视频| 国产精品盗摄久久久| 在线观看国产精品网站| 一区二区三区高清视频在线观看| 午夜精品理论片| 亚洲第一精品福利| 欧美一区激情| 欧美日韩一区二区视频在线| 国产在线成人| 亚洲淫性视频| 亚洲国产精品久久精品怡红院| 亚洲视频你懂的| 欧美激情视频一区二区三区免费| 国产精品性做久久久久久| 亚洲精品美女在线| 久久精品视频99| 亚洲午夜av| 欧美精品综合| 亚洲精品国产欧美| 美女免费视频一区| 欧美一区二区三区免费视|