NeHe OpenGL教程 第三課:顏色渲染

來源:互聯網
上載者:User

標籤:覆蓋   identity   翻譯   log   lan   重設   技術分享   entity   下載   

轉自【翻譯】NeHe OpenGL 教程

前言

聲明,此 NeHe OpenGL教程系列文章由51部落格yarin翻譯(2010-08-19),本部落格為轉載並稍加整理與修改。對NeHe的OpenGL管線教程的編寫,以及yarn的翻譯整理表示感謝。

 

 

第三課:顏色渲染

添加顏色:

作為第二課的擴充,我將叫你如何使用顏色。你將理解兩種著色模式,在左圖中,三角形用的是光滑著色,四邊形用的是平面著色。

上一課中我教給您三角形和四邊形的繪製方法。這一課我將教您給三角形和四邊形添加2種不同類型的著色方法。使用Flat coloring(單調著色)給四邊形塗上固定的一種顏色。使用Smooth coloring(平滑著色)將三角形的三個頂點的不同顏色混合在一起,建立漂亮的色彩混合。
繼續在上節課的DrawGLScene常式上修改。下面將整個常式重寫了一遍。如果您計劃修改上節課的代碼,只需用下面的代碼覆蓋原來的DrawGLScene()就可以了。

int DrawGLScene(GLvoid)       // 此過程中包括所有的繪製代碼
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  // 清除螢幕及深度緩衝
 glLoadIdentity();      // 重設模型觀察矩陣
 glTranslatef(-1.5f,0.0f,-6.0f);     // 左移 1.5 單位,並移入螢幕 6.0

 glBegin(GL_TRIANGLES);      // 繪製三角形

如果您還記得上節課的內容,這段代碼在螢幕的左半部分繪製三角形。下一行代碼是我們第一次使用命令glColor3f(r,g,b)。括弧中的三個參數依次是紅、綠、藍三色分量。取值範圍可以從0,0f到1.0f。類似於以前所講的清除螢幕背景命令。
我們將顏色設為紅色(純紅色,無綠色,無藍色)。接下來的一行代碼設定三角形的第一個頂點(三角形的上頂點),並使用使用中色彩(紅色)來繪製。從現在開始所有的繪製的對象的顏色都是紅色,直到我們將紅色改變成別的什麼顏色。

  glColor3f(1.0f,0.0f,0.0f);    // 設定當前色為紅色
  glVertex3f( 0.0f, 1.0f, 0.0f);    // 上頂點

 第一個紅色頂點已經設定完畢。接下來我們設定第二個綠色頂點。三角形的左下頂點被設為綠色。 
  
  glColor3f(0.0f,1.0f,0.0f);    // 設定當前色為綠色
  glVertex3f(-1.0f,-1.0f, 0.0f);    // 左下

現在設定第三個也就是最後一個頂點。開始繪製之前將顏色設為藍色。這將是三角形的右下頂點。glEnd()出現後,三角形將被填充。但是因為每個頂點有不同的顏色,因此看起來顏色從每個角噴出,並剛好在三角形的中心匯合,三種顏色相互混合。這就是平滑著色。 

  glColor3f(0.0f,0.0f,1.0f);    // 設定當前色為藍色
  glVertex3f( 1.0f,-1.0f, 0.0f);    // 右下
 glEnd();       // 三角形繪製結束

 glTranslatef(3.0f,0.0f,0.0f);     // 右移3單位

現在我們繪製一個單調著色-藍色的正方形。最重要的是要記住,設定當前色之後繪製的所有東東都是當前色的。以後您所建立的每個工程都要使用顏色。即便是在完全採用紋理貼圖的時候,glColor3f仍舊可以用來調節紋理的色調。等等....,以後再說吧。
我們必須要做的事只需將顏色一次性的設為我們想採用的顏色(本例採用藍色),然後繪製情境。每個頂點都是藍色的,因為我們沒有告訴OpenGL要改變頂點的顏色。最後的結果是.....全藍色的正方形。再說一遍,順時針繪製的正方形意味著我們所看見的是四邊形的背面。

 glColor3f(0.5f,0.5f,1.0f);     // 一次性將當前色設定為藍色
 glBegin(GL_QUADS);      // 繪製正方形
  glVertex3f(-1.0f, 1.0f, 0.0f);    // 左上
  glVertex3f( 1.0f, 1.0f, 0.0f);    // 右上
  glVertex3f( 1.0f,-1.0f, 0.0f);    // 左下
  glVertex3f(-1.0f,-1.0f, 0.0f);    // 右下
 glEnd();       // 正方形繪製結束
 return TRUE;       // 繼續運行
}
  
最後換掉視窗模式下的標題內容 

  // 重建 OpenGL 視窗
  if (!CreateGLWindow("NeHe‘s顏色執行個體",640,480,16,fullscreen))

原文及其個版本原始碼下載:

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=03

 

 

NeHe OpenGL教程 第三課:顏色渲染

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.