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

            那誰(shuí)的技術(shù)博客

            感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
            隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

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

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

                // 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函數(shù)生成紋理對(duì)象,第一個(gè)參數(shù)是紋理參數(shù)的數(shù)量,第二個(gè)參數(shù)是存放紋理對(duì)象的數(shù)組,這里只生成了一個(gè)紋理對(duì)象,如果多的話就要寫一個(gè)循環(huán)來(lái)逐個(gè)生成.
            glBindTexture函數(shù)把當(dāng)前紋理狀態(tài)綁定到紋理對(duì)象中,第一個(gè)參數(shù)指明了綁定的紋理目標(biāo),第二個(gè)參數(shù)是紋理對(duì)象.調(diào)用這個(gè)函數(shù)之后,后面的操作都是對(duì)這個(gè)紋理對(duì)象進(jìn)行的操作.首先是使用glTexImage2D函數(shù)讀取位圖數(shù)據(jù)來(lái)生成紋理,之后的glTexParameteri函數(shù)分別指定了發(fā)大和縮小過(guò)濾器的參數(shù).

            在具體使用紋理對(duì)象的時(shí)候同樣的要使用glBindTexture函數(shù),如前所述,這個(gè)函數(shù)是把當(dāng)前狀態(tài)綁定到對(duì)應(yīng)的紋理對(duì)象中去,也就是說(shuō)使用了這個(gè)函數(shù)之后,后面的對(duì)紋理圖像的生成或者是使用都在這個(gè)紋理對(duì)象上面進(jìn)行的,因此在后面的渲染部分的函數(shù)中同樣也使用了glBindTexture函數(shù).

            OK,本課沒(méi)有太多的難點(diǎn),需要注意的兩個(gè)地方是:
            1)使用位圖數(shù)據(jù)生成紋理圖像之后要記得釋放位圖數(shù)據(jù)的內(nèi)存,代碼中有體現(xiàn),不再詳述.
            2)在程序結(jié)束或者不再使用某一個(gè)紋理對(duì)象的時(shí)候要使用glDeleteTextures釋放紋理對(duì)象的內(nèi)存,代碼中并沒(méi)有這個(gè)函數(shù)的使用,它的參數(shù)和glGenTextures是一樣的,一個(gè)負(fù)責(zé)生成一個(gè)負(fù)責(zé)銷毀.

            紋理對(duì)象的使用方便了對(duì)紋理的管理,尤其是當(dāng)紋理數(shù)量較多的時(shí)候,可以很方便的切換紋理,可以把紋理對(duì)象看作是管理紋理圖像的"指針".

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

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

            posted on 2006-02-13 23:37 那誰(shuí) 閱讀(3768) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 圖形學(xué)


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            伊色综合久久之综合久久| 国产激情久久久久影院老熟女| 亚洲乱亚洲乱淫久久| 91久久精品视频| 亚洲国产成人精品女人久久久 | 精品久久久久久综合日本| 久久九九亚洲精品| 人人狠狠综合88综合久久| 精品国产VA久久久久久久冰| 精品久久久久久无码人妻蜜桃| 久久天天躁夜夜躁狠狠| 国产午夜精品久久久久九九| 国产A级毛片久久久精品毛片| 97久久精品人人做人人爽| 亚洲国产精品高清久久久| 性欧美丰满熟妇XXXX性久久久| 97r久久精品国产99国产精| 色欲综合久久躁天天躁蜜桃 | 久久精品夜色噜噜亚洲A∨| 精品国产青草久久久久福利| 久久99久久成人免费播放| 99999久久久久久亚洲| 欧美精品九九99久久在观看| 国内精品久久久久久久coent| 久久99中文字幕久久| 久久婷婷五月综合色奶水99啪| 久久久这里有精品| 久久伊人精品青青草原日本| 国产成人精品久久| 国产精品日韩欧美久久综合| 久久99国产精一区二区三区| 国产精品久久免费| 99久久人妻无码精品系列蜜桃| 久久久久久人妻无码| 久久亚洲精品中文字幕| 久久亚洲春色中文字幕久久久| 国内精品九九久久精品| 午夜欧美精品久久久久久久| 性色欲网站人妻丰满中文久久不卡| 精品一二三区久久aaa片| 77777亚洲午夜久久多喷|