日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】OpenGL超级宝典笔记——纹理映射Mipmap

發(fā)布時(shí)間:2023/12/9 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】OpenGL超级宝典笔记——纹理映射Mipmap 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址?http://my.oschina.net/sweetdark/blog/177812?, 感謝作者,若非法轉(zhuǎn)載請(qǐng)聯(lián)系本人。

目錄[-]

  • Mipmapping
  • Mipmap過濾
  • 構(gòu)建Mip層
  • Mipmaps 硬件生成
  • LOD(多細(xì)節(jié)層次)偏好
  • 紋理對(duì)象
  • 管理多個(gè)紋理
  • 常駐紋理
  • 紋理優(yōu)先級(jí)
  • 回顧

Mipmapping

Mipmap是一個(gè)功能強(qiáng)大的紋理技術(shù),它可以提高渲染的性能以及提升場(chǎng)景的視覺質(zhì)量。它可以用來解決使用一般的紋理貼圖會(huì)出現(xiàn)的兩個(gè)常見的問題:

  • 閃爍,當(dāng)屏幕上被渲染物體的表面與它所應(yīng)用的紋理圖像相比顯得非常小時(shí),就會(huì)出現(xiàn)閃爍。尤其當(dāng)相機(jī)和物體在移動(dòng)的時(shí)候,這種負(fù)面效果更容易被看到。
  • 性能問題。加載了大量的紋理數(shù)據(jù)之后,還要對(duì)其進(jìn)行過濾處理(縮小),在屏幕上顯示的只是一小部分。紋理越大,所造成的性能影響就越大。

Mipmap就可以解決上面那兩個(gè)問題。當(dāng)加載紋理的時(shí)候,不單單是加載一個(gè)紋理,而是加載一系列從大到小的紋理當(dāng)mipmapped紋理狀態(tài)中。然后OpenGl會(huì)根據(jù)給定的幾何圖像的大小選擇最合適的紋理。Mipmap是把紋理按照2的倍數(shù)進(jìn)行縮放,直到圖像為1x1的大小,然后把這些圖都存儲(chǔ)起來,當(dāng)要使用的就選擇一個(gè)合適的圖像。這會(huì)增加一些額外的內(nèi)存。在正方形的紋理貼圖中使用mipmap技術(shù),大概要比原先多出三分之一的內(nèi)存空間。

mipmap有多少個(gè)層級(jí)是有g(shù)lTexImage的第二個(gè)參數(shù)level決定的。層級(jí)從0開始,0,1,2,3這樣遞增。如果沒有使用mipmap技術(shù),只有第0層的紋理會(huì)被加載。在默認(rèn)情況下,為了使用mipmap,所有層級(jí)都會(huì)被加載。但我們可以通過紋理參數(shù)來控制要加載的層級(jí)范圍,使用glTexParameteri, 第二個(gè)參數(shù)為GL_TEXTURE_BASE_LEVEL來指定最低層級(jí)的level,第二個(gè)參數(shù)為GL_TEXTURE_MAX_LEVEL指定最高層級(jí)的level。例如我只需要加載0到4層級(jí)的紋理:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);

除此之外,我們還可通過GL_TEXTURE_MIN_LOD和GL_TEXTURE_MAX_LOD來限制紋理的使用范圍(最底層和最高層)。

Mipmap過濾

Mipmap的紋理過濾模式如下表:

常量描述
GL_NEAREST在mip基層上使用最鄰近過濾
GL_LINEAR在mip基層上使用線性過濾
GL_NEAREST_MIPMAP_NEAREST選擇最鄰近的mip層,并使用最鄰近過濾
GL_NEAREST_MIPMAP_LINEAR在mip層之間使用線性插值和最鄰近過濾
GL_LINEAR_MIPMAP_NEAREST選擇最鄰近的mip層,使用線性過濾
GL_LINEAR_MIPMAP_LINEAR在mip層之間使用線性插值和使用線性過濾,又稱三線性mipmap

如果紋理過濾選擇為GL_NEAREST或GL_LINEAR模式,那么只有基層的紋理會(huì)被加載,其他的紋理將會(huì)被忽略。我們必須指定其中一個(gè)mipmap過濾器,這樣才能使用所有已加載的紋理。這個(gè)mipmap過濾器的常量是GL_FILTER_MIPMAP_SELECTOR的形式。其中FLILTER指定了過濾模式,SELECTOR指定了如何選擇mipmap層。例如GL_NEAREST_MIPMAP_LINEAR模式,它的SELECTOR是GL_LINEAR,它會(huì)在兩個(gè)最鄰近的mip層中執(zhí)行線性插值,然后得出的結(jié)果又由被選擇的過濾器GL_NEAREST進(jìn)行過濾。

其中GL_NEAREST_MIPMAP_NEAAREST具有很好的性能,也能夠解決閃爍的問題,但在視覺效果上會(huì)比較差。其中GL_LINEAR_MIPMAP_NEAREST常用于游戲加速,使用了質(zhì)量較高的線性過濾,和快速的選擇的方式(最鄰近方式)。

使用最鄰近的方式作為mipmap選擇器的效果依然不能令人滿意。從某一個(gè)角度去看,常??梢钥吹轿矬w表面從一個(gè)mip層到另一個(gè)mip層的轉(zhuǎn)變。GL_LINEAR_MIPMAP_LINEAR和GL_NEAREST_MIPMAP_LINEAR過濾器在mip層之間執(zhí)行一些額外的線性插值,以消除不同層之間的變換痕跡,但也需要一些額外的性能開銷。GL_LINEAR_MIPMAP_LINEAR具有最高的精度。

構(gòu)建Mip層

mip貼圖需要加載更小的基本紋理圖像以便使用。但我們手頭上沒有這些更小的紋理圖像,怎么辦呢。GLU函數(shù)庫提供了一個(gè)很方便的方法gluBuildMipmaps,它會(huì)幫我們縮放圖像并通過類似glTexImage的函數(shù)加載圖像。支持1維、2維、3維的圖像,函數(shù)原型如下:

int gluBuild1DMipmaps(GLenum target, GLint internalFormat, GLint width, GLenum format, GLenum type, const void *data);

int gluBuild2DMipmaps(GLenum target, GLint internalFormat, GLint width, GLint height, GLenum format, GLenum type, const void *data);

int gluBuild3DMipmaps(GLenum target, GLint internalFormat, GLint width, GLint height, GLint depth, GLenum format, GLenum type, const void *data);

參數(shù)的意義與glTexImage相同。但沒有l(wèi)evel參數(shù)來指定mipmap的層級(jí),也不支持紋理邊界。使用這個(gè)函數(shù)未必能夠獲得高質(zhì)量的較小的紋理貼圖,只是比較方便。要使用高質(zhì)量的不同比例的紋理貼圖,最好是自己手工制作,然后加載。GLU庫是使用box過濾器(簡單地就是對(duì)給定范圍的像素進(jìn)行加權(quán)平均,例如7X7的box filter,你就需要對(duì)49個(gè)像素進(jìn)行平均)

新版的GLU庫中可以使用gluBuild*MipmapLevels來更好的控制加載的紋理層級(jí)

int gluBuild1DMipmapLevels(GLenum target, GLint internalFormat, GLint width, GLenum format, GLenum type, GLint base, GLint max, const void *data);

int gluBuild2DMipmapLevels(GLenum target, GLint internalFormat, GLint width, GLint height, GLenum format, GLenum type, GLint base, GLint max, const void *data);

int gluBuild3DMipmapLevels(GLenum target, GLint internalFormat, GLint widht, GLint height, GLint depth, GLenum format, GLenum type, GLint base, GLint max, const void *data);

創(chuàng)建從base到max層的紋理數(shù)據(jù)。

Mipmaps 硬件生成

使用OpenGL的硬件加速來生成所需要的紋理。函數(shù)調(diào)用如下:

glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);

當(dāng)這個(gè)參數(shù)被設(shè)置為GL_TRUE時(shí),所有調(diào)用glTexImage或者glTexSubImage都會(huì)自動(dòng)更新紋理貼圖(第0級(jí))和所有更低層的紋理。通過使用硬件加速會(huì)比使用glu庫中的gluBuildMipmap要快,但這個(gè)特性本來只是個(gè)擴(kuò)展,在OpenGL1.4才被納入OpenGL核心API的。

LOD(多細(xì)節(jié)層次)偏好

當(dāng)mipmapping被啟用時(shí),OpenGL會(huì)根據(jù)各個(gè)mip層的大小和幾何圖形在屏幕上的面積來決定哪一個(gè)mip層被選擇。OpenGL會(huì)選擇最合適的mip貼圖層與屏幕上的紋理表示形式進(jìn)行匹配。我們可以告訴OpenGL向后(選擇更大的mip層)或向前(選擇更小的mipmap層)來調(diào)整選擇的標(biāo)準(zhǔn)。使用更小的mip層可以提高性能,選擇更大的mip層可以銳化紋理映射的對(duì)象。這個(gè)偏好設(shè)置示例如下:

glTexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, –1.5);

上面會(huì)使的細(xì)節(jié)紋理層傾向于使用更高層的細(xì)節(jié)(更小的level層參數(shù)),從而使得紋理的外觀更為銳利,代價(jià)是紋理處理的開銷大一些。

紋理對(duì)象

glTexImage, glTexSubImage和gluBuildMipmaps這些函數(shù)的調(diào)用消耗的時(shí)間特別多。這些函數(shù)大量的移動(dòng)內(nèi)存,有時(shí)需要重新調(diào)整數(shù)據(jù)的格式來適應(yīng)一些內(nèi)部的表示。在紋理之間切換或者重新加載不同的紋理圖片會(huì)帶來較大的性能開銷。

為了減少這些開銷,我們可以使用紋理對(duì)象。紋理對(duì)象允許你一次性加載多個(gè)紋理狀態(tài)(包括紋理圖像),然后在它們之間快速切換。紋理狀態(tài)由當(dāng)前綁定的紋理對(duì)象來維護(hù)。紋理的名稱由unsigned int類型來標(biāo)識(shí)。使用下面的函數(shù)來生成一定數(shù)量的紋理對(duì)象:

void glGenTextures(GLsizei n, GLuint *textures);

上面的函數(shù)調(diào)用指定了紋理對(duì)象的數(shù)量,和存儲(chǔ)紋理對(duì)象名稱的數(shù)組。我們可以通過紋理對(duì)象名稱來操作紋理狀態(tài)。綁定其中的一個(gè)紋理狀態(tài)的函數(shù)調(diào)用如下:

void glBindTexture(GLenum target, GLuint texture);

target參數(shù)必須是GL_TEXTURE_1D,GL_TEXTURE_2D或者GL_TEXTURE_3D.texture是紋理名稱指定要綁定的紋理對(duì)象。在此函數(shù)之后,紋理圖像的加載和紋理參數(shù)的設(shè)置都只影響當(dāng)前綁定的紋理對(duì)象。最后刪除紋理對(duì)象的函數(shù)如下:

void glDeleteTextures(GLsizei n, GLuint *texture);

參數(shù)的意義與glGenTextures相同。不一定需要每次產(chǎn)生紋理對(duì)象使用后就刪除所有的紋理對(duì)象。多次調(diào)用glGenTextures的開銷較小,但多次調(diào)用glDeleteTextures會(huì)有導(dǎo)致一些延遲,原因是需要釋放大量的能存空間。在不再需要此紋理對(duì)象時(shí),要把該紋理對(duì)象刪除,防止內(nèi)存泄露。

判斷紋理對(duì)象名稱是否可用可以通過下面的函數(shù)調(diào)用來判斷:

GLboolean glIsTexture(GLuint texture);

返回GL_TRUE代表可用,GL_FALSE代表不可用。

管理多個(gè)紋理

一般而言,在程序初始化時(shí)加載多個(gè)紋理對(duì)象,然后在渲染期間不斷地切換,在不再使用時(shí)刪除紋理對(duì)象。下面是一個(gè)通道tunnel的例子,此例在啟動(dòng)時(shí)加載三個(gè)紋理對(duì)象,然后通過切換來繪制通道的磚墻,天花板和地板。此例中還演示了不同的mipmap模式,通過右鍵菜單來切換,通過上下箭頭鍵來在通道中移動(dòng),通過左右鍵來旋轉(zhuǎn)通道。

完整示例如下:

#include "gltools.h" #include <stdio.h>//定義宏常量 #define CEILING 0 #define BRICK 1 #define FLOOR 2 #define TEXTURENUM 3//紋理圖像的路徑 const char* texFileName[] = {"..\\ceiling.tga","..\\brick.tga","..\\floor.tga"};//紋理對(duì)象名稱 static GLuint textureName[TEXTURENUM];//旋轉(zhuǎn)與移動(dòng) static GLfloat yRot = 0.0f; static GLfloat zPos = 0.0f;//切換不同的紋理模式 void ProcessMenu(int value) {switch (value){case 0:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);break;case 1:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);break;case 2:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);break;case 3:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);break;case 4:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);break;case 5:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);break;case 6:if (gltIsExtSupported("GL_EXT_texture_filter_anisotropic")){//開啟各向異性過濾 GLfloat fLargest;glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest);printf("anisotropic:%f\n", fLargest);glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);}break;default:break;}glutPostRedisplay(); }void SetupRC() {glClearColor(0.0f, 0.0f, 0.0f, 1.0f);//開啟深度測(cè)試,消除隱藏面,避免后畫的墻畫到前面來 glEnable(GL_DEPTH_TEST);//紋理圖像的信息 GLint iWidth, iHeight, iComponents;GLenum eFormat;//設(shè)置紋理環(huán)境 glTexEnvi(GL_TEXTURE_2D, GL_TEXTURE_ENV, GL_REPLACE);//生成紋理對(duì)象 glGenTextures(TEXTURENUM, textureName);for (int i = 0; i < TEXTURENUM; ++i){void *pImage = gltLoadTGA(texFileName[i], &iWidth, &iHeight, &iComponents, &eFormat);if (pImage){//綁定紋理對(duì)象,生成mipmap glBindTexture(GL_TEXTURE_2D, textureName[i]);gluBuild2DMipmaps(GL_TEXTURE_2D, iComponents, iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pImage);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);}free(pImage);}glEnable(GL_TEXTURE_2D);}void ShutdownRC() {//最后刪除紋理對(duì)象 glDeleteTextures(TEXTURENUM, textureName); }void RenderScene() {glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glPushMatrix();//移動(dòng)和旋轉(zhuǎn)glTranslatef(0.0f, 0.0f, zPos);glRotatef(yRot, 0.0f, 1.0f, 0.0f);for(GLfloat z = -60.0f; z <= 0.0f; z += 10.0f){//綁定地板紋理繪制地板,注意glBeindTexture在glBegin和glEnd中是無效的 glBindTexture(GL_TEXTURE_2D, textureName[FLOOR]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z + 10.0f);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, -10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, -10.0f, z);glEnd();//綁定天花板紋理 glBindTexture(GL_TEXTURE_2D, textureName[CEILING]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z + 10.0f);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, 10.0f, z);glEnd();//綁定磚墻的紋理 glBindTexture(GL_TEXTURE_2D, textureName[BRICK]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z);glTexCoord2f(1.0f, 1.0f);glVertex3f(-10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(-10.0f, -10.0f, z + 10.0f);glTexCoord2f(0.0f, 0.0f);glVertex3f(10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(10.0f, 10.0f, z);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, -10.0f, z + 10.0f);glEnd();}//GLclampf prioritize[TEXTURENUM] = {0.0f, 0.0f, 1.0f};//glPrioritizeTextures(TEXTURENUM, textureName, prioritize);//GLboolean isResident[TEXTURENUM];//if (glAreTexturesResident(TEXTURENUM, textureName, isResident))//{// printf("all texture is resident\n");//}//else//{// printf("texture resident is : %d %d %d", isResident[0], isResident[1], isResident[2]);//} glPopMatrix();glutSwapBuffers(); }void ChangeSize(GLsizei w, GLsizei h) {if (h == 1)h = 0;glViewport(0, 0, w, h);GLfloat aspect = (GLfloat)w/(GLfloat)h;glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(35.5, aspect, 1.0, 150.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glutPostRedisplay(); }void SpecialKey(int value, int x, int y) {if (value == GLUT_KEY_LEFT){yRot += 0.5f;}if (value == GLUT_KEY_RIGHT){yRot -= 0.5f;}if (value == GLUT_KEY_UP){zPos += 0.5f;}if (value == GLUT_KEY_DOWN){zPos -= 0.5f;}if (yRot > 365.5f){yRot = 0.0f;}glutPostRedisplay(); }int main(int arg, char **argv) {glutInit(&arg, argv);glutInitDisplayMode(GL_RGB | GL_DOUBLE | GL_DEPTH);glutInitWindowSize(800, 600);glutCreateWindow("tunel");glutReshapeFunc(ChangeSize);glutDisplayFunc(RenderScene);glutSpecialFunc(SpecialKey);glutCreateMenu(ProcessMenu);glutAddMenuEntry("GL_NEAREST", 0);glutAddMenuEntry("GL_LINEAR", 1);glutAddMenuEntry("GL_NEAREST_MIPMAP_NEAREST", 2);glutAddMenuEntry("GL_LINEAR_MIPMAP_NEAREST", 3);glutAddMenuEntry("GL_NEAREST_MIPMAP_LINEAR", 4);glutAddMenuEntry("GL_LINEAR_MIPMAP_LINEAR", 5);glutAddMenuEntry("ANISOTROPIC", 6);glutAttachMenu(GLUT_RIGHT_BUTTON);SetupRC();glutMainLoop();ShutdownRC();return 0; }

?

GL_NEAREST效果圖(紋理比較銳利):

GL_LINEAR_MIPMAP_LINEAR效果圖(線性插值后的紋理過渡較平滑):

在我們程序初始化時(shí),生成了多個(gè)紋理對(duì)象,加載了多個(gè)紋理。這樣我們?cè)谑褂脮r(shí)就非常的方便,只要通過glBindTexutre切換紋理就可以了。使用完之后就釋放紋理。

for(GLfloat z = -60.0f; z <= 0.0f; z += 10.0f){//綁定地板紋理繪制地板,注意glBeindTexture在glBegin和glEnd中是無效的 glBindTexture(GL_TEXTURE_2D, textureName[FLOOR]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z + 10.0f);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, -10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, -10.0f, z);glEnd();//綁定天花板紋理 glBindTexture(GL_TEXTURE_2D, textureName[CEILING]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z + 10.0f);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, 10.0f, z);glEnd();//綁定磚墻的紋理 glBindTexture(GL_TEXTURE_2D, textureName[BRICK]);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex3f(-10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(-10.0f, 10.0f, z);glTexCoord2f(1.0f, 1.0f);glVertex3f(-10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(-10.0f, -10.0f, z + 10.0f);glTexCoord2f(0.0f, 0.0f);glVertex3f(10.0f, -10.0f, z);glTexCoord2f(1.0f, 0.0f);glVertex3f(10.0f, 10.0f, z);glTexCoord2f(1.0f, 1.0f);glVertex3f(10.0f, 10.0f, z + 10.0f);glTexCoord2f(0.0f, 1.0f);glVertex3f(10.0f, -10.0f, z + 10.0f);glEnd();}

?

tunnel示例中,切換mipmap紋理過濾器時(shí),只修改了縮小過濾器

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

典型的情況下,在OpenGL選擇了最大的可用mip層之后,就沒有更大的mip層可供選擇了。這相當(dāng)于設(shè)置了一條門檻,更大的圖形也只能使用這個(gè)mip層,沒有更大的mip層了。

常駐紋理

在大多數(shù)的OpenGL實(shí)現(xiàn)中,都提供了一定數(shù)量的常駐紋理來提高性能。顯卡的內(nèi)存(顯存)是有限的,在紋理切換中當(dāng)顯存不夠時(shí),就要把一些紋理數(shù)據(jù)從顯存中移除(暫時(shí)存放到硬盤或內(nèi)存中)。

為了優(yōu)化性能,OpenGL會(huì)自動(dòng)的把最經(jīng)常使用的紋理保存在顯存中作為常駐紋理。判斷當(dāng)前紋理是否是常駐紋理,通過下面的函數(shù)調(diào)用來測(cè)試:

GLboolean glAreTexturesResident(GLsizei n, const GLuint *texture, GLboolean *residences);

第一個(gè)參數(shù)是紋理對(duì)象的個(gè)數(shù),第二是紋理對(duì)象名稱數(shù)組,第三個(gè)是輸出參數(shù),記錄著對(duì)應(yīng)的紋理是否是常駐紋理。如果所有的紋理對(duì)象都是常駐紋理則glAreTexutresResident返回GL_TRUE。

紋理優(yōu)先級(jí)

默認(rèn)情況下,OpenGL實(shí)現(xiàn)是使用最經(jīng)常使用(MFFU)來決定紋理是否常駐顯存。如果最經(jīng)常使用的紋理很小,而大紋理不經(jīng)常使用,那么就會(huì)導(dǎo)致小紋理常駐顯存,而大紋理卻經(jīng)常被移除。為了避免此問題,我們可以手動(dòng)設(shè)置紋理的優(yōu)先級(jí)。通過下面的函數(shù)調(diào)用:

void glPrioritizeTextures(GLsizei n, const GLuint *texture, const GLclampf *priorites);

第一個(gè)參數(shù)是紋理對(duì)象的個(gè)數(shù),第二個(gè)是紋理名稱數(shù)組,第三個(gè)是紋理的優(yōu)先級(jí)參數(shù),范圍為[0.0,1.0]。低優(yōu)先級(jí)告訴OpenGL當(dāng)顯存不夠時(shí)有限考慮移除此低優(yōu)先級(jí)的紋理。示例:

GLclampf prioritize[TEXTURENUM] = {0.0f, 0.0f, 1.0f};
glPrioritizeTextures(TEXTURENUM, textureName, prioritize);
GLboolean isResident[TEXTURENUM];
if (glAreTexturesResident(TEXTURENUM, textureName, isResident))
{
printf("all texture is resident\n");
}
else
{
printf("texture resident is : %d %d %d", isResident[0], isResident[1], isResident[2]);
}

回顧

在紋理這一章,我們學(xué)習(xí)如何加載紋理glTexImage,設(shè)置紋理參數(shù)glTexParameter,設(shè)置紋理環(huán)境glTexEnv,使用mipmap,管理紋理對(duì)象,多紋理的使用和切換,紋理過濾器等等。詳細(xì)的介紹了紋理的各種參數(shù)。

代碼以及數(shù)據(jù)紋理和庫都在此地址可以獲取(上面的示例為tunnel工程):

https://github.com/sweetdark/openglex

轉(zhuǎn)載于:https://www.cnblogs.com/cack/p/4972806.html

總結(jié)

以上是生活随笔為你收集整理的【转】OpenGL超级宝典笔记——纹理映射Mipmap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美国产日韩在线视频 | 亚洲精品视频在线播放 | 91日韩精品 | 亚洲www天堂com| 国产精品1000 | 黄色特级毛片 | 黄色毛片观看 | 精品欧美一区二区三区久久久 | 国产精品尤物 | 精品亚洲二区 | 视频精品一区二区三区 | 久久久国产精品免费 | 在线观看一区 | 久久国产二区 | 国产在线一区二区三区播放 | 亚洲国产精品成人女人久久 | 国产精品黄色影片导航在线观看 | 欧美视频一区二 | 国产高清av在线播放 | 午夜精品影院 | 色成人亚洲网 | 国产精品免费一区二区三区在线观看 | 视频高清 | 国产精品免费看久久久8精臀av | 久草资源在线 | 99热最新地址 | 成人v| 久久9999久久免费精品国产 | 亚州精品天堂中文字幕 | 国产成人av在线 | 伊人久久国产 | 免费一级片在线观看 | 欧美性生活小视频 | 免费黄色在线播放 | 丁香婷婷色 | 99麻豆久久久国产精品免费 | 日韩av一区二区三区 | 999成人| 国产性xxxx | 久久艹人人 | 久草影视在线 | 伊人天天色 | 欧美日韩不卡一区二区 | 欧美91精品久久久久国产性生爱 | 操久在线 | 一二三区视频在线 | 国产美女被啪进深处喷白浆视频 | 中文字幕在线播放av | 国产精品伦一区二区三区视频 | 国内久久精品视频 | 亚洲精品网页 | 国产69久久久欧美一级 | 精品久久国产精品 | 狠狠操夜夜 | 婷婷丁香在线视频 | 成人影片免费 | 久草精品视频在线看网站免费 | 97视频久久久 | 青青河边草免费直播 | 久久黄网站 | 麻豆传媒视频观看 | 视频在线观看亚洲 | 国产一级视频免费看 | 国产黄色a | 天天干天天射天天操 | 探花视频在线观看免费 | 国产一区二区综合 | 日韩精品在线播放 | av电影不卡| 国产成人高清av | 2022国产精品视频 | 欧美精品一区在线发布 | 国产精品理论片在线播放 | 国产香蕉av | 亚洲一区二区视频在线 | 深夜激情影院 | 国产视频一区在线免费观看 | 国产精品第7页 | 婷婷激情网站 | 亚洲午夜精品一区二区三区电影院 | 伊人久久国产 | 国产精品国产三级国产专区53 | 久久久久国产精品一区二区 | 久久精品美女视频 | 伊人电影在线观看 | 国产精品福利在线播放 | 99自拍视频在线观看 | 能在线看的av | 成人免费在线电影 | 中文av一区二区 | 激情五月婷婷综合网 | 天天操天天色综合 | 久99久中文字幕在线 | 麻豆国产精品一区二区三区 | 色视频在线免费观看 | 黄网站大全 | 久久国产高清视频 | 日韩欧美国产视频 | 国产精品黄色av | 最近更新的中文字幕 | 五月婷亚洲 | 亚洲视频,欧洲视频 | 久久久久一区二区三区 | 免费a级黄色毛片 | 国内免费的中文字幕 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 97超碰伊人| 午夜精品福利一区二区三区蜜桃 | 色网站中文字幕 | 久久99视频免费 | 精品国产乱码久久 | 玖玖视频网 | 色婷婷婷 | 日韩在线高清 | 夜夜看av | 国产视频导航 | 好看av在线| 亚洲精品在线视频观看 | 97精品国产97久久久久久春色 | 综合五月| 992tv在线观看网站 | 美女视频黄网站 | 色婷婷免费视频 | 在线视频电影 | 久久亚洲视频 | 在线国产视频 | 成人精品久久久 | 美女视频免费一区二区 | 在线一区二区三区 | 国产高清中文字幕 | 97成人在线免费视频 | 中文字幕在线免费看 | 久久久久久国产精品亚洲78 | 成人av网址大全 | 国产不卡精品 | 91尤物在线播放 | 欧美视频www | 色综合久久88色综合天天 | 国产精品久久久久久久久久久免费看 | 久草在线最新视频 | 超碰在线人人 | 狠狠色狠狠综合久久 | 色吧久久| 亚洲,国产成人av | 日韩理论| 在线只有精品 | 亚洲一区视频在线播放 | 欧美成人亚洲成人 | 999成人免费视频 | 五月天电影免费在线观看一区 | 天天操天天干天天操天天干 | 国产精品永久免费观看 | 欧美在线1区 | 伊人伊成久久人综合网站 | 国产午夜精品一区二区三区欧美 | 亚洲免费av观看 | 五月婷婷中文字幕 | 大胆欧美gogo免费视频一二区 | 国产精品自拍在线 | 91完整版观看 | 久久天堂影院 | av线上看 | 中文字幕高清在线 | 亚洲精品中文字幕视频 | 国产不卡在线播放 | 国产成人av电影在线观看 | 九色最新网址 | 日韩免费电影在线观看 | 黄色av电影网 | 69绿帽绿奴3pvideos | 黄色av高清 | 久久黄色片子 | 日本韩国在线不卡 | 久久看毛片 | 免费黄色在线播放 | 干干夜夜 | 国产精品99久久久久久宅男 | 激情网在线观看 | 又黄又爽又色无遮挡免费 | 国产日产精品一区二区三区四区的观看方式 | 五月天激情视频在线观看 | 色射爱| 色婷婷www | 久久激五月天综合精品 | 国产精品不卡 | 精品一区二区免费 | 国产丝袜制服在线 | 免费观看十分钟 | 射久久久 | 中文字幕国产一区 | 成人在线黄色电影 | 精品免费视频 | 欧美日韩在线视频一区 | 日韩欧美在线第一页 | 国产伦理久久精品久久久久_ | 天天爽网站 | av三级av| 国产中文在线观看 | 久久精品毛片基地 | 国产亚洲精品成人av久久影院 | 成人av片在线观看 | 日韩精品一区二区在线观看视频 | 国产成人一区二区三区电影 | 欧美精品久久久久久 | 精品欧美乱码久久久久久 | 三级动图| 欧美精品亚洲精品日韩精品 | 国产精选视频 | 白丝av在线| 欧美日韩调教 | 欧美日韩免费看 | 久久久麻豆精品一区二区 | 日韩大片在线播放 | 天天干天天综合 | 午夜av色 | 国产小视频精品 | 欧美性色综合 | 国产日韩三级 | 亚洲精品高清在线 | 欧美色图东方 | 亚洲精品一区二区三区在线观看 | 国产精品你懂的在线观看 | 日日干 天天干 | 亚洲国产影院 | 精品国产乱码久久久久久三级人 | 91成人在线看 | 五月天六月婷婷 | zzijzzij亚洲日本少妇熟睡 | 91av看片| 欧美经典久久 | 久久久久 | 亚洲视频免费 | 亚洲天堂免费视频 | 国产精品久久久久三级 | 国产精品白浆 | 香蕉在线视频观看 | 国产精品美女久久久久久久网站 | 欧美最新大片在线看 | 激情五月婷婷激情 | 好看的国产精品视频 | 麻豆国产精品一区二区三区 | 国产精品亚洲精品 | 精品视频免费看 | 久久国产精品99久久久久久老狼 | 成人免费视频视频在线观看 免费 | 成年人在线观看免费视频 | 欧美激情视频一二三区 | 久久久久久中文字幕 | 99在线观看免费视频精品观看 | 亚洲精品欧美专区 | 久久久久久久久久伊人 | 欧美一区二区三区在线看 | 中文字幕文字幕一区二区 | 91精品国产91久久久久久三级 | 奇米影视在线99精品 | 亚洲成人av电影在线 | 91精品一区国产高清在线gif | 91在线视频精品 | 男女靠逼app | 国产精品永久在线 | 色婷婷影视 | 日韩高清在线看 | 精品一区二区在线观看 | 精品a视频 | 在线免费观看麻豆视频 | 美女黄久久 | 女女av在线| 久久久污| 91丨九色丨勾搭 | 中文字幕日韩免费视频 | 成人午夜黄色 | 日本久久久久久久久久久 | 91精品国产高清自在线观看 | 国产亚洲视频系列 | 成年人视频在线免费播放 | 在线播放国产一区二区三区 | 丝袜美腿在线 | 成人久久免费 | 在线日韩精品视频 | www.久久免费 | 日韩高清dvd | 日批网站免费观看 | 人人干人人干人人干 | 涩涩网站在线看 | 日本黄色免费在线观看 | 日韩一区精品 | 97在线免费视频观看 | 亚洲精品午夜久久久久久久久久久 | 毛片网站免费 | 亚洲综合激情网 | 日日日爽爽爽 | 一区二区三区在线免费观看 | 啪啪午夜免费 | 日韩精品久久一区二区三区 | 国产精品九九久久久久久久 | 国产精品久久久久久久久久了 | 精品国产伦一区二区三区观看方式 | 久久91网 | 亚洲 欧美 精品 | 天天操狠狠操 | av播放在线| 亚洲经典视频 | 免费国产黄线在线观看视频 | 成人久久亚洲 | 四虎影视4hu4虎成人 | 日韩com | 成人黄色国产 | 男女全黄一级一级高潮免费看 | 国产精品免费久久久久久久久久中文 | 日韩在线不卡视频 | 精品1区2区 | 91视频电影 | 国产一二三四在线观看视频 | 国产区 在线 | 青青河边草免费观看 | 99r在线视频 | 欧美日韩亚洲精品在线 | 成人免费观看在线视频 | 亚洲免费不卡 | 伊人超碰在线 | 日韩欧美综合视频 | 美女网站在线观看 | 国产一级免费片 | 三级黄色欧美 | 国产美女精品视频免费观看 | 国产一级在线播放 | 91精品麻豆| 成人av资源在线 | 成人av在线直播 | 九九热在线视频免费观看 | 伊人久久五月天 | 久久人人爽人人爽人人片av软件 | 天天操天天干天天综合网 | 成人在线观看资源 | 日韩在线观看视频网站 | 婷婷六月在线 | 91黄视频在线观看 | 国产精品欧美久久 | 97人人爽人人 | 天堂av官网 | 亚洲精品国偷自产在线91正片 | 天天伊人网| 日韩高清免费在线 | 欧美成人区 | 国产视频精品久久 | 日韩在线观看你懂得 | av亚洲产国偷v产偷v自拍小说 | 久免费视频 | 国产黄色片一级 | 久久久网址 | 日韩在线小视频 | 九九久久久 | 国产精品亚洲综合久久 | 四虎影视成人精品国库在线观看 | 日本午夜在线亚洲.国产 | 综合色婷婷 | 色天天综合久久久久综合片 | 丁香一区二区 | 免费视频xnxx com | 成人毛片一区二区三区 | 中文字幕在线观看播放 | 激情小说久久 | 久久99视频精品 | 在线免费视频你懂的 | 五月激情丁香婷婷 | 高清av网站 | 久草在线99 | 久久综合久久综合九色 | 在线观看国产日韩 | 久免费| 日本精品一区二区三区在线观看 | 日韩高清dvd | 亚洲国产小视频在线观看 | 三级av网站 | 二区三区在线 | 久久午夜电影网 | 日本精a在线观看 | 欧美色噜噜 | 高清国产午夜精品久久久久久 | 国产精品wwwwww | 97av在线 | 97免费中文视频在线观看 | 日韩理论电影网 | 免费观看mv大片高清 | 丁香六月久久综合狠狠色 | 亚洲电影久久久 | 伊人官网 | 成人网中文字幕 | 中文字幕在线视频一区二区 | 韩国av一区二区三区 | 天天综合五月天 | 国产精品一级在线 | 99久久精品日本一区二区免费 | 日韩深夜在线观看 | 91看片在线观看 | 福利一区二区在线 | 一区二区三区国产欧美 | 美女视频黄色免费 | 日日躁夜夜躁aaaaxxxx | 韩日av一区二区 | 国语久久| 在线 国产 日韩 | 在线不卡的av | 久久精品xxx | 在线观看国产区 | 色婷婷福利视频 | 亚洲精品在线观看不卡 | 国内精品久久天天躁人人爽 | 成人xxxx| 五月花婷婷| 成人app在线免费观看 | 91麻豆精品国产91久久久无限制版 | 黄色最新网址 | 91超级碰碰| 亚洲精品九九 | 久久不射网站 | 91精品国产福利 | 在线观看久久 | 丰满少妇对白在线偷拍 | 最近2019年日本中文免费字幕 | 色a综合 | 欧美亚洲国产精品久久高清浪潮 | 欧美性生活一级片 | 国产精品久久久久久婷婷天堂 | 在线91播放 | 国产精品久久久久久久久久99 | 国产亚洲精品bv在线观看 | 色狠狠综合 | 欧美视频一区二 | 精品一区二区三区久久 | 亚洲污视频 | 成人av网站在线观看 | 久久久久久久久毛片精品 | 久久久免费看片 | 亚洲在线看 | 91黄色成人| 久久99视频精品 | 亚洲艳情| 91亚·色| 日韩三级在线观看 | 久久久网页 | 久热色超碰 | 国产区精品在线 | a在线免费观看视频 | 免费av视屏 | 日本爱爱免费视频 | 久久精品一二三区白丝高潮 | 亚洲视频1 | 天天综合网入口 | 丝袜美女视频网站 | 99久高清在线观看视频99精品热在线观看视频 | 午夜精品一区二区三区可下载 | 91久久国产综合精品女同国语 | 玖玖视频在线 | www.com久久 | www免费看片com | 在线色亚洲 | 九九久久精品 | 91久久国产自产拍夜夜嗨 | 亚洲欧美日韩国产 | 97超视频免费观看 | 在线观看一区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产在线一线 | 六月丁香在线观看 | 国产特级毛片 | 日韩91在线 | 色偷偷97| 国产视频不卡 | 亚洲九九九在线观看 | 热99在线视频 | 精品久久久久久久久亚洲 | 久久精品一二三区白丝高潮 | 精品在线观看免费 | 亚洲天堂精品视频在线观看 | 六月丁香婷婷网 | 婷婷激情在线 | 亚洲欧美日韩国产 | 免费看一级特黄a大片 | 男女免费视频观看 | 中文字幕在线观看完整版电影 | 欧洲成人免费 | 久久久久久高潮国产精品视 | 13日本xxxxxⅹxxx20 | 亚洲精品在线免费 | 久久亚洲区 | 日韩一区二区免费在线观看 | 亚洲国产精品999 | 日韩精品中文字幕在线 | 亚洲精品女人久久久 | 99视频一区| 日韩精品综合在线 | 17婷婷久久www| 麻豆国产精品一区二区三区 | 亚洲成人免费在线 | 永久黄网站色视频免费观看w | 男女免费av| 黄色成人影视 | 免费色视频网站 | 国色天香在线 | 黄色一区二区在线观看 | www婷婷| 婷婷综合在线 | 一区二区三区精品久久久 | 亚洲精品综合欧美二区变态 | 国内精品久久天天躁人人爽 | 天天草天天草 | 亚洲va欧洲va国产va不卡 | 黄色片免费看 | 999久久久久 | 日韩精品一区二区三区在线视频 | 91视频久久久久 | 日韩av免费大片 | 日韩高清免费在线 | 欧美一区二区三区免费看 | 91精品国产乱码 | 亚洲影视九九影院在线观看 | 一区二区影院 | 手机版av在线 | 热久久免费视频精品 | 丁香久久激情 | 日韩a欧美 | av 一区二区三区 | 福利电影久久 | 亚洲伊人天堂 | 日韩 国产| 色97在线 | 在线看片中文字幕 | 精品国产不卡 | 久久激情五月婷婷 | 手机在线日韩视频 | 色a在线观看 | 夜夜操狠狠干 | 一区二区三区视频网站 | 精品一区在线看 | 国产成人久久精品77777综合 | 欧美精品久久久久久久亚洲调教 | 伊人五月在线 | 欧美精品久久久久久久久久久 | 亚洲激情视频在线 | 在线观看中文字幕av | 免费看毛片网站 | 肉色欧美久久久久久久免费看 | 国产无区一区二区三麻豆 | 亚洲精品视频国产 | 九九视频免费观看视频精品 | 日韩av片无码一区二区不卡电影 | 日韩理论 | 久久免费av| 午夜在线免费观看视频 | 久久精品网站视频 | 亚洲日日日 | 在线色亚洲 | 91免费版在线观看 | 日韩av伦理片 | 久久深夜 | 日韩在线视频不卡 | 亚洲精选在线观看 | 久久婷婷综合激情 | 色婷婷亚洲 | 欧美 亚洲 另类 激情 另类 | 中文字幕欲求不满 | 国产99久久久欧美黑人 | 激情五月在线视频 | 一区av在线播放 | 黄色成人av | 日日夜夜天天人人 | 免费在线观看av网址 | 99久久久国产精品免费99 | 综合色中色 | 成人a视频在线观看 | 91看片在线观看 | 91精品国产一区二区在线观看 | 日韩精品一区二区三区水蜜桃 | 国产大片黄色 | 日本精品视频在线观看 | 欧美va日韩va| 国产高清福利在线 | 国产精品99在线观看 | 992tv在线观看 | 国产精品综合久久久久久 | 亚洲区视频在线 | 99国产精品一区二区 | 日韩视频中文字幕 | 最新免费av在线 | av片在线观看免费 | 国产剧情一区二区在线观看 | 国产一级片一区二区三区 | 狠狠色综合网站久久久久久久 | 久久国产精品99国产精 | 黄污视频网站大全 | 亚洲精品国产精品国产 | 狠狠色香婷婷久久亚洲精品 | 天天干天天操天天拍 | 日韩在线视频一区二区三区 | 国产一区二区不卡视频 | 亚洲永久国产精品 | 欧美激情h | 久久黄色小说 | 成人a视频| 青青河边草手机免费 | 亚洲不卡av一区二区三区 | 夜夜骑天天操 | 亚洲伦理一区二区 | 色婷婷导航 | 日本女人在线观看 | 久久成电影 | 日韩午夜av | 99精品欧美一区二区三区黑人哦 | 丝袜一区在线 | 最新日韩电影 | 国产精品久久久久久久久久久久午夜 | 日韩视频精品在线 | 99亚洲精品 | 精品久久久久久电影 | 射射色 | 国产精品久久一卡二卡 | 久久激情电影 | 日韩高清免费在线 | 日韩av一区二区三区在线观看 | 五月天婷婷丁香花 | 国产亚洲精品久久网站 | 97超碰国产精品女人人人爽 | 日韩中文字幕在线看 | 国产精品欧美久久久久天天影视 | 狠狠色丁香婷婷综合久久片 | 99色国产 | 亚洲视频六区 | 国产精品av在线 | 久久亚洲综合国产精品99麻豆的功能介绍 | 成人a毛片 | 国产高清在线 | 美国av大片 | 久久久久久免费网 | 97视频亚洲 | 91色亚洲| 亚洲a资源 | 国产va在线| 在线观看中文字幕 | 久久精品一区二区三区国产主播 | 久久人人爽视频 | 字幕网资源站中文字幕 | 亚洲天堂精品视频在线观看 | 天天干.com| 日韩极品视频在线观看 | 国产高清日韩欧美 | 97在线看片 | 久久精品视频在线播放 | 天天弄天天干 | 免费国产ww | 国产色婷婷| 国产精品观看 | 欧美日本在线视频 | 97国产超碰在线 | 91亚洲精 | 精品自拍sae8—视频 | 人人干人人爽 | 欧美一级性视频 | 人人澡av | 亚洲精选在线 | 99精品国产99久久久久久福利 | 99精品视频在线观看视频 | 久草亚洲视频 | 久久久免费看片 | 精品在线观看一区二区 | 久久久久电影网站 | 久久久久免费精品视频 | 久久久久亚洲精品国产 | 91资源在线免费观看 | 91久久精品日日躁夜夜躁国产 | 欧美福利在线播放 | wwwwww国产| 日韩精品第1页 | 99热官网| 国产亚洲精品久久久久久久久久 | 亚洲高清av在线 | 手机色站 | 超碰免费久久 | 欧美亚洲国产一卡 | 波多野结衣电影久久 | 精品国产一区二区三区久久久蜜月 | 99精品系列 | 久久99深爱久久99精品 | 噜噜色官网 | 欧美a级成人淫片免费看 | 亚洲欧洲成人 | 免费在线观看日韩 | 九九热视频在线播放 | av网站在线观看免费 | 在线免费观看视频a | 一区二区 不卡 | 天堂av免费看 | 久草视频资源 | 国产区av在线 | 久草精品电影 | 中文字幕av有码 | 亚洲电影久久 | 久久五月天婷婷 | 久久精品久久99精品久久 | 久久久久国产一区二区三区四区 | 日韩亚洲国产中文字幕 | 黄色片网站 | 久久久精品小视频 | 久久国产影视 | 美女视频永久黄网站免费观看国产 | 成人网444ppp | 日韩激情片在线观看 | 亚州日韩中文字幕 | 中文字幕久久精品一区 | 五月激情在线 | 91麻豆精品国产午夜天堂 | 日日夜夜人人精品 | 奇米四色影狠狠爱7777 | 日日麻批40分钟视频免费观看 | 精品久久免费 | 国产精品18久久久久久久久 | 国产成人一区二区三区电影 | 精品国产一区二区三区四区在线观看 | www操操| 国产一区欧美二区 | 狠狠狠狠狠狠狠狠 | 精品一区二区三区久久久 | 在线播放精品一区二区三区 | 欧美热久久 | 成年人免费在线观看 | 人人插人人做 | 狠狠狠狠狠干 | 色偷偷男人的天堂av | 欧美国产大片 | 国产精品12| 麻豆果冻剧传媒在线播放 | 国产在线不卡精品 | 中文字幕视频在线播放 | 激情av一区二区 | 亚洲国产精品久久久 | 久久久高清免费视频 | 日韩色一区二区三区 | 日韩一级成人av | 亚洲在线看| 久久电影网站中文字幕 | 亚洲人在线| 中文字幕美女免费在线 | 国产亚洲精品成人av久久ww | 日韩av电影免费观看 | 国产亚洲精品福利 | 成人黄色av网站 | 日韩极品视频在线观看 | av免费观看高清 | 久久久久久久久久福利 | 成人在线免费看视频 | 成人a级网站| 欧美国产视频在线 | 欧美日韩性视频在线 | 久草视频免费观 | 国产91小视频 | 伊人五月天 | 黄色av三级在线 | 中文字幕在线视频国产 | 久久久综合 | 国产成人免费 | 日本黄色大片免费看 | 综合五月婷婷 | 久久久久久久久电影 | 中文字幕久久精品 | av成人在线网站 | 九九视频网站 | 亚洲精品视频在线 | 丁香婷婷在线 | 91精品啪 | 久久99国产精品免费 | 日韩一级精品 | 午夜精品久久久久久中宇69 | 久久国内精品99久久6app | 国产一区二区精品91 | 久久免费精品 | 亚洲一区二区精品 | 操操操夜夜操 | 亚洲尺码电影av久久 | 成年在线观看 | 麻豆 videos| 精品国产自在精品国产精野外直播 | 黄色亚洲大片免费在线观看 | 久热免费 | 91在线永久 | 精品福利视频在线 | 黄网站色 | 综合成人在线 | 在线观看黄色 | 国产麻豆视频免费观看 | 激情婷婷在线观看 | 久草五月 | 在线免费观看麻豆 | 欧美精品日韩 | 国产精品九九九九九九 | 日韩精品久久久久久中文字幕8 | 免费中文字幕在线观看 | 99色| 国产在线观看,日本 | 亚洲精品高清在线 | 亚洲欧美日韩国产一区二区 | 国产中文a | 日韩中文字幕免费视频 | 亚洲伊人av | 国产成人一区二区三区电影 | 免费观看www7722午夜电影 | 亚洲黄色av | 超碰99在线| 91视频久久久久 | 天堂av免费 | 免费网站黄色 | 狠狠色噜噜狠狠 | 国产视频精品久久 | 国产精品第54页 | 中文字幕在线看 | 丁香亚洲 | 人人澡人 | 成年人在线播放视频 | 伊人伊成久久人综合网站 | 美女网站色在线观看 | 国产精品久久久久久久久久妇女 | 国产精品美女视频网站 | 一区二区视频在线观看免费 | 国产成人一区二区三区免费看 | 国产美女网 | 最新国产精品亚洲 | 中文字幕在线观看的网站 | 一级精品视频在线观看宜春院 | 久久久国产精品网站 | 欧美资源 | 成人激情开心网 | 永久免费在线 | 欧美日韩一区二区在线观看 | 国内精品亚洲 | 国产一级电影在线 | 久草视频看看 | av资源在线观看 | 欧美性生活一级片 | 色先锋av资源中文字幕 | 日韩欧美xxxx | 亚洲天堂精品视频 | 国产精品99久久久精品免费观看 | 99在线视频免费观看 | 网址你懂的在线观看 | 在线国产中文字幕 | 在线观看日韩精品视频 | 免费观看一级特黄欧美大片 | 久久久久免费精品国产小说色大师 | 天天色天天搞 | a视频在线 | 亚洲劲爆av| 午夜电影久久久 | 麻豆免费在线播放 | 国产中文字幕在线播放 | 日韩美精品视频 | 免费高清在线观看成人 | 日日操操 | 天海翼一区二区三区免费 | 伊甸园永久入口www 99热 精品在线 | 久久人人爽人人爽人人片av免费 | 在线视频中文字幕一区 | 亚洲欧美国产精品va在线观看 | 久久视频在线视频 | 91丨九色丨勾搭 | 国产一区在线不卡 | 在线视频欧美精品 | 91丨九色丨蝌蚪丨对白 | 日本高清xxxx | 国产又粗又猛又爽又黄的视频先 | 在线观看国产福利片 | 日韩福利在线观看 | 亚洲伊人成综合网 | 国色天香第二季 | 欧美精品国产综合久久 | 国产对白av | 国产美女精品久久久 | 国产精品一区二 | 国产99久久久国产精品免费看 | 国产免费激情久久 | 国产一区二区成人 | 美女福利视频 | 国产精品入口传媒 | 亚洲第一av在线播放 | 综合在线观看色 | 国产免费一区二区三区最新6 | 99 色| 四虎视频| 91精品视频在线看 | 天天综合天天综合 | 国产精品免费观看久久 | 国内精品视频免费 | 久久99在线观看 | 亚洲高清视频在线播放 | 91桃色国产在线播放 | 视频精品一区二区三区 | 蜜桃视频在线观看一区 | 天天操天天摸天天射 | 中文字幕二区 | 99久久久久国产精品免费 | 久久精品国产一区二区 | 麻豆免费在线视频 | 国产对白av | 日韩91在线 | www视频免费在线观看 | 狠狠色2019综合网 | 欧美有色| 免费在线播放视频 | 欧美一区二区精品在线 | 精品免费 | 国产精品手机在线 | 精品夜夜嗨av一区二区三区 | av电影av在线 | 操操综合 | 中文字幕观看av | 婷婷网五月天 | 93久久精品日日躁夜夜躁欧美 | 天天操人| 国产精品成人av电影 | 99精品久久久久久久久久综合 | 热久久国产精品 | 一区二区三区在线免费观看视频 | 99视频网站 | 久久久国产精品人人片99精片欧美一 | 91伊人| 四虎国产精品免费 | 免费高清国产 | 黄色一级大片在线免费看国产一 | 在线免费观看黄 | 91大神在线看 | 国产在线中文字幕 | 日韩精品aaa | 免费影视大全推荐 | 欧美aa在线 | 视频二区在线 | 91精品国自产在线观看欧美 | 蜜臀aⅴ国产精品久久久国产 | 欧美日韩国产精品久久 | 国产精品色在线 | 在线看片日韩 | 色婷婷福利 | 黄色软件视频大全免费下载 | 99国产情侣在线播放 | www.av在线.com| 日韩一区二区三区在线看 | 亚洲一区免费在线 | 国产精品久久久久久久久久东京 | 丁香五月亚洲综合在线 | 在线一级片| 日韩精品影视 | 一区免费观看 | 在线观看成人av | 麻豆视频国产精品 | 国产高清成人av | 久久久久北条麻妃免费看 | 一区二区三区日韩视频在线观看 | 日本性动态图 | 夜夜躁日日躁狠狠久久av | 激情图片久久 | 亚洲国产视频网站 | 在线亚洲欧美日韩 | 三级视频日韩 | 久久久久一区二区三区四区 | 午夜精品久久久久久中宇69 | 97视频在线看 | 色偷偷88欧美精品久久久 | 一区二区视频电影在线观看 | 天天色天天综合网 | 天天干天天操av | 久久午夜色播影院免费高清 | 久久综合干| 中文字幕日韩在线播放 | 免费看十八岁美女 | 一级黄色片在线免费看 | 亚洲精品黄网站 | 久久字幕精品一区 | 国产白浆视频 | 日韩一区二区免费在线观看 | 国产精品99免视看9 国产精品毛片一区视频 | 成人在线免费av | 精品一区91 | 成人黄色大片在线观看 | 日韩欧美视频在线播放 | 一本一道久久a久久综合蜜桃 | 国产91影视 | 日韩av片无码一区二区不卡电影 | 91精品国产自产在线观看永久 | 999精品视频| 亚洲精选99| 99久久99久久精品国产片果冰 | 日韩1页 | 黄色成年 | 亚洲日本精品视频 | 色丁香婷婷 | 久久久国产精品亚洲一区 | 人人爱爱人人 | 中文av字幕在线观看 | 国产一区二区久久久 | 亚洲日韩欧美一区二区在线 | 色偷偷888欧美精品久久久 |