溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT-訥河 代碼重寫

發布時間:2020-07-19 14:11:04 來源:網絡 閱讀:312 作者:WZM3558862 欄目:開發技術

上一課中我教給您三角形和四邊形的繪制方法。這一課我將教您給三角形和四邊形添加兩種不同類型的著色方法。使用單調著色(Flat coloring)給四邊形涂上固定的一種顏色。使用平滑著色(Smooth coloring)將三角形的三個頂點的不同顏色混合在一起,創建漂亮的色彩混合。

我們只要修改第二課中的NeHeWidget類中的paintGL()函數就可以了。

NeHeWidget類

(由nehewidget.cpp展開。)

void NeHeWidget::paintGL()
{
  glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
  glLoadIdentity();
  
  glTranslatef( -1.5,  0.0, -6.0 );
  
  glBegin( GL_TRIANGLES );
    glColor3f( 1.0, 0.0, 0.0 );

紅色。

如果您還記得上節課的內容,這段代碼在屏幕的左半部分繪制三角形。這一行代碼是我們第一次使用命令glColor3f( r, g, b )。括號中的三個參數依次是紅、綠、藍三色分量。取值范圍可以從0.0到1.0。類似于以前所講的清除屏幕背景命令。

我們將顏色設為紅色(純紅色,無綠色,無藍色)。

    glVertex3f(  0.0,  1.0,  0.0 );

上頂點。

接下來的一行代碼設置三角形的第一個頂點(三角形的上頂點),并使用當前顏色(紅色)來繪制。從現在開始所有的繪制的對象的顏色都是紅色,直到我們將紅色改變成別的什么顏色。

    glColor3f( 0.0, 1.0, 0.0 );

綠色。

    glVertex3f( -1.0, -1.0,  0.0 );

左下頂點。

    glColor3f( 0.0, 0.0, 1.0 );

藍色。

    glVertex3f(  1.0, -1.0,  0.0 );

右下頂點。

  glEnd();

glEnd()出現后,三角形將被填充。但是因為每個頂點有不同的顏色,因此看起來顏色從每個角噴出,并剛好在三角形的中心匯合,三種顏色相互混合。這就是平滑著色。

  glTranslatef(  3.0,  0.0,  0.0 );
  
  glColor3f( 0.5, 0.5, 1.0 );

一次性將顏色設置為藍色。

現在我們繪制一個單調著色——藍色的正方形。最重要的是要記住,設置當前色之后繪制的所有東東都是當前色的。以后您所創建的每個工程都要使用顏色。即便是在完全采用紋理貼圖的時候,glColor3f仍舊可以用來調節紋理的色調。等等...,以后再說吧。

我們必須要做的事只需將顏色一次性的設為我們想采用的顏色(本例采用藍色),然后繪制場景。每個頂點都是藍色的,因為我們沒有告訴OpenGL要改變頂點的顏色。最后的結果是.....全藍色的正方形。再說一遍,順時針繪制的正方形意味著我們所看見的是四邊形的背面。

  glBegin( GL_QUADS );
    glVertex3f( -1.0,  1.0,  0.0 );
    glVertex3f(  1.0,  1.0,  0.0 );
    glVertex3f(  1.0, -1.0,  0.0 );
    glVertex3f( -1.0, -1.0,  0.0 );
  glEnd();
}

在這一課中,我試著盡量詳細的解釋如何為您的OpenGL多邊形添加單調和平滑的著色效果的步驟。改改代碼中的紅綠藍分量值,看看最后有什么樣的結果。

本課程的源代碼。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女