• <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>

              C++博客 :: 首頁 :: 聯系 ::  :: 管理
              163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(48)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 400070
            • 排名 - 59

            最新評論

            閱讀排行榜

            評論排行榜

            上一課中我教給您三角形和四邊形的繪制方法。這一課我將教您給三角形和四邊形添加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;                  // 繼續運行
              }

               最后換掉窗口模式下的標題內容。

                         if (keys[VK_F1])         // F1鍵按下了么?
                         {
                               keys[VK_F1]=FALSE;
                // 若是,使對應的Key數組中的值為 FALSE
                             KillGLWindow();     // 銷毀當前的窗口
                             fullscreen=!fullscreen; // 切換 全屏 / 窗口 模式
                              // 重建 OpenGL 窗口(修改)
                             if (!CreateGLWindow("NeHe’s Color Tutorial",
                                   640,480,16,fullscreen))
                              {
                                   return 0;
                // 如果窗口未能創建,程序退出
                             }
                          }


            在這一課中,我試著盡量詳細的解釋如何為您的OpenGL多邊形添加單調和平滑的著色效果的步驟。改改代碼中的紅綠藍分量值,看看最后有什么樣的結果。如 果您有什么意見或建議請給我寫信。如果您認為有什么不對或可以改進,請告訴我。我想做最好的OpenGL教程并對您的反饋感興趣。
            posted on 2007-12-09 18:51 sdfasdf 閱讀(648) 評論(1)  編輯 收藏 引用 所屬分類: OPENGL

            Feedback

            # re: OpenGL教程- 著色 第三課 2007-12-09 19:08 學海一人
            Thank you!  回復  更多評論
              

            久久人人爽人人爽人人av东京热| 久久久久久精品免费免费自慰| 久久亚洲精品中文字幕| 麻豆精品久久久久久久99蜜桃| 久久精品国产久精国产一老狼| 一本一本久久A久久综合精品 | 久久久这里有精品| 人妻久久久一区二区三区| 精品九九久久国内精品| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久亚洲国产精品成人AV秋霞| 国产一区二区精品久久| 亚洲精品成人久久久| 国产精品一区二区久久国产| 99久久国产免费福利| 亚洲va久久久噜噜噜久久| 久久国产视屏| 狠狠狠色丁香婷婷综合久久俺| 亚洲国产成人久久一区久久| 国产欧美久久一区二区| 香蕉久久夜色精品升级完成| 日日狠狠久久偷偷色综合免费| 伊人久久大香线焦AV综合影院| 久久久精品日本一区二区三区| 97精品国产91久久久久久| 伊人久久五月天| 久久久综合香蕉尹人综合网| 99久久人妻无码精品系列蜜桃| 久久精品中文无码资源站| 色偷偷88欧美精品久久久| 狠狠精品干练久久久无码中文字幕 | 久久国产精品99精品国产987| 久久久噜噜噜久久| 99国内精品久久久久久久| 九九精品99久久久香蕉| 午夜精品久久久久久久久| 亚洲精品高清国产一线久久 | 亚洲va久久久噜噜噜久久狠狠| 亚洲国产精品一区二区三区久久| 国产精品成人无码久久久久久 | 久久亚洲AV成人出白浆无码国产|