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

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            NeHe OpenGL教程第六課--Texture Mapping(紋理映射)的學習筆記

            前面幾課基本上沒有什么好多說的,所以我決定了從第六課開始,堅持著寫下去,歡迎各位遇到問題的時候和我討論,每篇筆記中我不想簡單的重復或者翻譯原文的內容,只想做到言簡意賅的把要點列出來,把握住每課的重點:)
            第六課的主要內容是紋理映射,從中可以學習到載入紋理數據之后如何綁定到紋理對象之中,然后使用相應的對象進行紋理映射.
            首先,代碼采用自己寫的LoadBMP函數載入位圖數據,之后綁定并且生成對應的紋理對象.相應的代碼如下:

                // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
                if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))
                
            {
                    Status
            =TRUE;                                    // Set The Status To TRUE

                    glGenTextures(
            1&texture[0]);                    // Create The Texture

                    
            // Typical Texture Generation Using Data From The Bitmap
                    glBindTexture(GL_TEXTURE_2D, texture[0]);
                    glTexImage2D(GL_TEXTURE_2D, 
            03, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
                    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
                    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
                }
            glGenTextures函數生成紋理對象,第一個參數是紋理參數的數量,第二個參數是存放紋理對象的數組,這里只生成了一個紋理對象,如果多的話就要寫一個循環來逐個生成.
            glBindTexture函數把當前紋理狀態綁定到紋理對象中,第一個參數指明了綁定的紋理目標,第二個參數是紋理對象.調用這個函數之后,后面的操作都是對這個紋理對象進行的操作.首先是使用glTexImage2D函數讀取位圖數據來生成紋理,之后的glTexParameteri函數分別指定了發大和縮小過濾器的參數.

            在具體使用紋理對象的時候同樣的要使用glBindTexture函數,如前所述,這個函數是把當前狀態綁定到對應的紋理對象中去,也就是說使用了這個函數之后,后面的對紋理圖像的生成或者是使用都在這個紋理對象上面進行的,因此在后面的渲染部分的函數中同樣也使用了glBindTexture函數.

            OK,本課沒有太多的難點,需要注意的兩個地方是:
            1)使用位圖數據生成紋理圖像之后要記得釋放位圖數據的內存,代碼中有體現,不再詳述.
            2)在程序結束或者不再使用某一個紋理對象的時候要使用glDeleteTextures釋放紋理對象的內存,代碼中并沒有這個函數的使用,它的參數和glGenTextures是一樣的,一個負責生成一個負責銷毀.

            紋理對象的使用方便了對紋理的管理,尤其是當紋理數量較多的時候,可以很方便的切換紋理,可以把紋理對象看作是管理紋理圖像的"指針".

            本課主要需要掌握的函數是:
            1)glGenTextures:生成紋理對象
            2)glBindTexture:綁定紋理對象
            3)glDeleteTextures:銷毀紋理對象
            4)glTexImage2D:根據圖形數據生成紋理圖像
            5)glTexParameteri:設置紋理參數.

            原文鏈接:
            http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06

            posted on 2006-02-13 23:37 那誰 閱讀(3765) 評論(0)  編輯 收藏 引用 所屬分類: 圖形學

            久久天堂电影网| 免费一级做a爰片久久毛片潮 | 久久精品国产久精国产果冻传媒| 亚洲综合熟女久久久30p| 嫩草影院久久国产精品| 99久久免费国产精品特黄| 99久久国产综合精品网成人影院| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 狠狠综合久久综合88亚洲| 国产精品视频久久| 欧美一区二区久久精品| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品九九亚洲精品天堂| 亚洲综合久久久| 国产精品激情综合久久| 久久久久人妻一区精品色| 2021国产精品午夜久久| 久久精品无码一区二区日韩AV| 国产精品久久久久久福利漫画 | 久久无码精品一区二区三区| 91精品国产综合久久婷婷| 久久久久免费精品国产| 亚洲欧美精品一区久久中文字幕| 韩国三级大全久久网站| 久久久久久九九99精品| 亚洲AV无码成人网站久久精品大| 青青青青久久精品国产h久久精品五福影院1421 | 精品久久久久成人码免费动漫 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 狼狼综合久久久久综合网| 亚洲美日韩Av中文字幕无码久久久妻妇 | 无码伊人66久久大杳蕉网站谷歌 | 国内精品久久久久影院薰衣草 | 精品国产福利久久久| 国产精品久久久久久久久| 99久久99这里只有免费费精品| 亚洲精品乱码久久久久久中文字幕| 99久久免费国产精品特黄| 久久AV无码精品人妻糸列| 日韩久久久久久中文人妻 | 久久亚洲中文字幕精品一区|