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

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>
            亚洲午夜电影在线观看| 亚洲午夜一区二区| 尤物精品在线| 欧美国产日韩xxxxx| 午夜视频久久久| 欧美在线视频观看| 在线成人激情黄色| 欧美日韩精品不卡| 欧美日韩国内| 国产精品三区www17con| 国产欧美一区二区三区国产幕精品 | 亚洲欧洲日本在线| 亚洲精品五月天| aa成人免费视频| 午夜综合激情| 欧美插天视频在线播放| 亚洲电影在线| 亚洲国产成人久久综合一区| 亚洲美女中文字幕| 先锋影音一区二区三区| 久久免费视频一区| 欧美精品v国产精品v日韩精品| 欧美视频免费| 国产一区二区三区四区hd| 亚洲大胆女人| 国产一区二区三区直播精品电影| 亚洲国产第一页| 亚洲一区免费网站| 久久这里只精品最新地址| 亚洲精品一区二区三区99| 亚洲欧美中文另类| 免费日韩一区二区| 国产精品日韩专区| 亚洲国产一区二区在线| 欧美一区二区精美| 午夜精彩国产免费不卡不顿大片| 午夜国产精品影院在线观看| 久久伊人亚洲| 国产欧美一区二区色老头| 亚洲精选视频免费看| 久久久久久久久久码影片| 亚洲美女电影在线| 久久久欧美一区二区| 国产精品大全| 亚洲三级观看| 久久综合狠狠综合久久综青草| 亚洲日韩欧美视频| 久久人人看视频| 国产欧美一区视频| 亚洲天堂av电影| 欧美国产日韩一区| 久久久国产精品一区| 国产精品一区久久久久| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲综合视频1区| 欧美电影在线播放| 性色av一区二区怡红| 国产精品videosex极品| 日韩午夜电影| 午夜精品久久久久99热蜜桃导演| 免费看黄裸体一级大秀欧美| 夜夜嗨av一区二区三区四季av | 一本高清dvd不卡在线观看| 麻豆精品一区二区综合av| 欧美一级在线视频| 国产麻豆精品视频| 欧美一级淫片播放口| 亚洲欧美激情视频| 国产乱码精品一区二区三| 亚洲欧美日韩国产成人| 中文在线一区| 国产精品美女久久久久久免费| 亚洲天堂av高清| 久久综合给合久久狠狠色| 国产日韩欧美黄色| 亚洲精品在线免费观看视频| 亚洲国产精品传媒在线观看| 久久黄色级2电影| 欧美一区二区三区视频在线| 欧美日韩高清在线观看| 亚洲福利视频网站| 激情亚洲成人| 欧美自拍丝袜亚洲| 久久精品欧美日韩精品| 国产精品系列在线| 亚洲图片欧美午夜| 亚洲在线中文字幕| 99av国产精品欲麻豆| 亚洲线精品一区二区三区八戒| 亚洲激情电影中文字幕| 在线色欧美三级视频| 久久久噜久噜久久综合| 久久这里有精品15一区二区三区 | 一区精品在线播放| 欧美亚洲一区在线| 久久av一区二区三区漫画| 国产精品爽黄69| 亚洲综合导航| 欧美制服丝袜第一页| 国产亚洲成精品久久| 午夜精品短视频| 久久久美女艺术照精彩视频福利播放| 国产伦精品一区二区三区视频黑人 | 亚洲图片自拍偷拍| 欧美日韩伦理在线| 一区二区三区高清在线观看| 亚洲性图久久| 国产精品久久久久影院色老大 | 99精品视频免费观看视频| 欧美精品不卡| 亚洲美洲欧洲综合国产一区| 亚洲欧美一区二区在线观看| 国产精品午夜国产小视频| 久久久999精品免费| 老司机一区二区三区| 亚洲黑丝在线| 欧美另类久久久品| aa国产精品| 久久国产精品久久精品国产| 国内视频精品| 欧美激情一区二区三区蜜桃视频| 亚洲精品综合| 久久精品二区三区| 亚洲国产影院| 国产精品视频你懂的| 久久久精品国产99久久精品芒果| 欧美激情视频一区二区三区不卡| 一区二区三区.www| 国产一区二区欧美日韩| 欧美成人黄色小视频| 亚洲小视频在线观看| 久久在线观看视频| 正在播放日韩| 黄色综合网站| 欧美丝袜一区二区| 久久精品女人| 一本色道久久综合狠狠躁篇的优点| 欧美中文在线免费| 亚洲精品国产视频| 国产精品99一区二区| 久久久久久黄| 亚洲午夜电影| 亚洲国产精品福利| 久久精品理论片| 在线中文字幕日韩| 极品日韩av| 国产精品久久77777| 麻豆精品在线视频| 午夜精品久久久久久久蜜桃app | 亚洲国产高清aⅴ视频| 性视频1819p久久| 亚洲欧洲一区二区天堂久久| 国产精品一区在线观看| 老色鬼久久亚洲一区二区| 亚洲一区二区精品| 亚洲欧洲一区二区三区在线观看 | 亚洲欧洲一区二区在线观看| 欧美一乱一性一交一视频| 亚洲精品123区| 国产日韩av高清| 欧美日韩视频第一区| 久久中文精品| 午夜精品久久久| 在线亚洲伦理| 亚洲电影第1页| 久久综合九色| 久久久噜噜噜久噜久久| 午夜视频一区在线观看| 亚洲美女中文字幕| 黄色免费成人| 国产亚洲综合精品| 国产精品乱人伦中文| 欧美日韩亚洲一区二区三区在线| 欧美电影免费观看| 欧美国产日韩一区二区三区| 欧美 日韩 国产在线| 免费成人av在线| 欧美成人午夜免费视在线看片 | 亚洲日本乱码在线观看| 在线观看日韩av电影| 激情久久久久久久| 国内精品模特av私拍在线观看| 国产目拍亚洲精品99久久精品| 国产精品久久久久久久久婷婷 | 久久精品中文字幕免费mv| 久久国产欧美日韩精品| 久久av资源网站| 久久久久久一区二区三区| 久久视频这里只有精品| 老色鬼精品视频在线观看播放| 久久理论片午夜琪琪电影网| 久久久午夜视频| 欧美sm视频| 最新日韩在线| 在线亚洲成人| 欧美一级夜夜爽| 美日韩精品视频| 欧美日韩精品欧美日韩精品 | 雨宫琴音一区二区在线| 亚洲国产精品欧美一二99|