<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>

畢業設計網
畢業設計論文 | 畢業設計任務書 | 計算機外文翻譯 | 文獻綜述 | 機械模具類 |

OpenGL外文翻譯-譯文部分

第一件事是打開VC然后創建一個新工程。如果您不知道如何創建的話,您也許不該學習OpenGL,而應該先學學VC。文末可供下載的代碼是VC++ 6.0的。某些版本的VC需要將bool改成BOOL,true改成TRUE,false改成FALSE,請自行修改。我用VC4和VC5編譯過這些代碼,沒有發現問題。
  在您創建一個新的Win32程序(不是console控制臺程序)后,您還需要鏈接OpenGL庫文件。在VC中操作如下:Project > Settings,然后單擊LINK標簽。在“Object/Library Modules”選項中的開始處(在kernel32.lib 前)增加OpenGL32.lib、GLu32.lib及GLaux.lib后單擊OK按鈕,F在可以開始寫您的OpenGL程序了。
  代碼的前4行包括了我們使用的每個庫文件的頭文件。如下所示:
  #include <windows.h>             // Windows的頭文件
  #include <gl\gl.h>               // OpenGL32庫的頭文件
  #include <gl\glu.h>               // GLu32庫的頭文件
  #include <gl\glaux.h>             // GLaux庫的頭文件
  接下來您需要設置您計劃在您的程序中使用的所有變量。本節中的例程將創建一個空的OpenGL窗口,因此我們暫時還無需設置大堆的變量。余下需要設置的變量不多,但十分重要。您將會在您以后所寫的每一個OpenGL程序中用到它們。
  第一行設置的變量是著色描述表(Rendering Context)。每一個OpenGL都被連接到一個著色描述表上。著色描述表將所有的OpenGL調用命令連接到設備描述表(Device Context)上。我將OpenGL的著色描述表定義為hRC。要讓您的程序能夠繪制窗口的話,還需要創建一個設備描述表,也就是第二行的內容。Windows的設備描述表被定義為 hDC。DC將窗口連接到圖形設備接口GDI(Graphics Device Interface)。而RC將OpenGL連接到DC。第三行的變量hWnd將保存由Windows給我們的窗口指派的句柄。最后,第四行為我們的程序創建了一個Instance(實例)。
  HGLRC hRC=NULL;                 // 永久著色描述表
  HDC hDC=NULL;                  // 私有GDI設備描述表
  HWND hWnd=NULL;                // 保存我們的窗口句柄
  HINSTANCE hInstance;              // 保存程序的實例
  下面的第一行設置一個用來監控鍵盤動作的數組。有許多方法可以監控鍵盤的動作,但這里的方法很可靠,并且可以處理多個鍵同時按下的情況。
  active 變量用來告知程序窗口是否處于最小化的狀態。如果窗口已經最小化的話,我們可以做從暫停代碼執行到退出程序的任何事情。我喜歡暫停程序。這樣可以使得程序不用在后臺保持運行。
  fullscreen 變量的作用相當明顯。如果我們的程序在全屏狀態下運行,fullscreen 的值為TRUE,否則為FALSE。這個全局變量的設置十分重要,它讓每個過程都知道程序是否運行在全屏狀態下。
  bool keys[256];                 // 用于鍵盤例程的數組
  bool active=TRUE;               // 窗口的活動標志,缺省為TRUE
  bool fullscreen=TRUE;             // 全屏標志缺省設定成全屏模式
  現在我們需要先定義WndProc()。必須這么做的原因是CreateGLWindow()有對WndProc()的引用,但WndProc()在CreateGLWindow()之后才出現。在C語言中,如果我們想要訪問一個當前程序段之后的過程和程序段的話,必須在程序開始處先申明所要訪問的程序段。所以下面的一行代碼先行定義了WndProc(),使得CreateGLWindow()能夠引用WndProc()。
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // WndProc的定義
  下面的代碼的作用是重新設置OpenGL場景的大小,而不管窗口的大小是否已經改變(假定您沒有使用全屏模式)。甚至您無法改變窗口的大小時(例如您在全屏模式下),它至少仍將運行一次 — 在程序開始時設置我們的透視圖。OpenGL場景的尺寸將被設置成它顯示時所在窗口的大小。
GLvoid ReSizeGLScene(GLsizei width, GLsizei height)   // 重置并初始窗口大小
  {
      if (height==0)                 // 防止被零除
      {
          height=1;              // 將Height設為1
      }
      glViewport(0, 0, width, height);        // 重置當前的視口(Viewport)
  下面幾行為透視圖設置屏幕。意味著越遠的東西看起來越小。這么做創建了一個現實外觀的場景。此處透視按照基于窗口寬度和高度的45度視角來計算。0.1f,100.0f是我們在場景中所能繪制深度的起點和終點。
   glMatrixMode(GL_PROJECTION)指明接下來的兩行代碼將影響投影矩陣(projection matrix)。投影矩陣負責為我們的場景增加透視。glLoadIdentity()近似于重置。它將所選的矩陣狀態恢復成其原始狀態。調用 glLoadIdentity()之后我們為場景設置透視圖。glMatrixMode(GL_MODELVIEW)指明任何新的變換將會影響模型觀察矩陣(modelview matrix)。模型觀察矩陣中存放了我們的物體訊息。最后我們重置模型觀察矩陣。如果您還不能理解這些術語的含義,請別著急。在以后的教程里,我會向大家解釋。只要知道如果您想獲得一個精彩的透視場景的話,必須這么做。
      glMatrixMode(GL_PROJECTION);          // 選擇投影矩陣
      glLoadIdentity();                 // 重置投影矩陣
      // 計算窗口的外觀比例
      gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
      glMatrixMode(GL_MODELVIEW);         // 選擇模型觀察矩陣
      glLoadIdentity();                 // 重置模型觀察矩陣
  }
  接下的代碼段中,我們將對OpenGL進行所有的設置。我們將設置清除屏幕所用的顏色,打開深度緩存,啟用陰影平滑(smooth shading),等等。這個例程直到OpenGL窗口創建之后才會被調用。此過程將有返回值。但我們此處的初始化沒那么復雜,現在還用不著擔心這個返回值。
  int InitGL(GLvoid)              // 此處開始對OpenGL進行所有設置
  {
  下一行啟用陰影平滑(smooth shading)。陰影平滑通過多邊形精細的混合色彩,并對外部光進行平滑。我將在另一個教程中更詳細的解釋陰影平滑。
      glShadeModel(GL_SMOOTH);     // 啟用陰影平滑
  下一行設置清除屏幕時所用的顏色。如果您對色彩的工作原理不清楚的話,我快速解釋一下。色彩值的范圍從0.0f到1.0f。0.0f代表最黑的情況,1.0f就是最亮的情況。glClearColor后的第一個參數是紅色分量(Red Intensity),第二個是綠色,第三個是藍色。最大值也是1.0f,代表特定顏色分量的最亮情況。最后一個參數是Alpha值。當它用來清除屏幕的時候,我們不用關心第四個數字,F在讓它為0.0f。我會用另一個教程來解釋這個參數。
  通過混合三種原色(紅、綠、藍),您可以得到不同的色彩。希望您在學校里學過這些。因此,當您使用glClearColor(0.0f,0.0f,1.0f,0.0f),您將用亮藍色來清除屏幕。如果您用 glClearColor(0.5f,0.0f,0.0f,0.0f)的話,您將使用中紅色來清除屏幕。不是最亮(1.0f),也不是最暗(0.0f)。要得到白色背景,您應該將所有的顏色設成最亮(1.0f)。要黑色背景的話,您該將所有的顏色設為最暗(0.0f)。
 

以上是一部分介紹,如需要完整的資料或者如不符合您的要求,請聯系技術人員qq:1587620172咨詢 微信:phpvisa66

上一篇:基于OpenGL的虛擬場景漫游軟件設計
下一篇:計算機圖形學課程算法演示系統


版權所有 畢業設計網聯系qq:1587620172 © 2007-2022

蝴蝶中文综合娱乐网

<pre id="p1pz5"><delect id="p1pz5"></delect></pre>
<output id="p1pz5"><delect id="p1pz5"><listing id="p1pz5"></listing></delect></output>

<p id="p1pz5"></p>

<pre id="p1pz5"></pre>

<p id="p1pz5"></p>
<pre id="p1pz5"><output id="p1pz5"></output></pre>
<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre><pre id="p1pz5"></pre>

<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"><menuitem id="p1pz5"></menuitem></output></p>

<output id="p1pz5"></output>
<pre id="p1pz5"><output id="p1pz5"></output></pre>

<p id="p1pz5"><delect id="p1pz5"><menuitem id="p1pz5"></menuitem></delect></p>

<p id="p1pz5"></p>
<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"><output id="p1pz5"></output></p>

<p id="p1pz5"><output id="p1pz5"></output></p>
<p id="p1pz5"></p>

<output id="p1pz5"><delect id="p1pz5"></delect></output>

<p id="p1pz5"></p>

<p id="p1pz5"></p>

<p id="p1pz5"></p>
<p id="p1pz5"><delect id="p1pz5"><address id="p1pz5"></address></delect></p>

<pre id="p1pz5"></pre>

<pre id="p1pz5"><output id="p1pz5"><delect id="p1pz5"></delect></output></pre>