亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

OpenGL圖形學實驗全解析:從DDA到著色器的可運行工程

OpenGL圖形學實驗全解析:從DDA到著色器的可運行工程 簡介西北工業(yè)大學軟件學院計算機圖形學實驗代碼包覆蓋二維/三維圖形繪制、幾何變換、投影視圖、光照模型、物體建模、碰撞檢測及交互設計等知識點全部程序基于C語言在VC6.0環(huán)境編寫調(diào)試適合課程同步練習、期末復習與項目復盤參考。壓縮包共224個文件、5.37MB含28個cpp源文件、18個h頭文件、12套dsp工程文件以及dsw、ncb、exe可執(zhí)行程序、obj目標文件、pch預編譯頭工程結(jié)構(gòu)完整可獨立編譯運行。已有581人學習。各實驗子項目代碼附有詳細注釋可對照Dijkstra最短路徑、Flood Fill區(qū)域填充、Phong光照模型等經(jīng)典算法實現(xiàn)理解圖形學底層原理亦能直接運行exe查看效果適合需要動手強化編程能力的學生與自學者。1. 期末突擊計算機圖形學一份能直接跑的實驗包意味著什么圖形學實驗最折磨人的不是算法公式而是你把DDA和Bresenham背得滾瓜爛熟屏幕依然一片黑。我整理這份某高校軟件學院《計算機圖形學》課程實驗包的時候核心目標只有一個讓每個實驗都能單獨編譯打開就有圖形反饋。它覆蓋畫線、畫圓、二維變換、三維觀察、光照材質(zhì)與紋理映射從CPU端的光柵化算法到GPU端著色器都有可運行工程。適合兩類人一類是期末想快速補齊實驗、照著可運行代碼理解原理的同學另一類是熟悉API但沒從頭寫過圖形學算法的開發(fā)者。壓縮包里沒有繞開算法的魔改畫筆路徑、光源位置、頂點索引全部攤開在源碼里你可以從框架里拎出一個實驗直接改也能把整套工程當模板逐步替換成自己的渲染器實現(xiàn)。2. 技術(shù)棧與工程拓撲Visual Studio OpenGL從固定管線到著色器2.1 依賴選擇freeglut、GLEW、GLM 各司其職OpenGL 不只是鏈接一個 opengl32.lib 就能舒服開發(fā)的它缺三樣東西窗口上下文、現(xiàn)代擴展函數(shù)指針、數(shù)學庫。這套實驗包用的是 C/Visual Studio 棧依賴集中在 freeglut、GLEW、GLM 三件套上。freeglut 負責創(chuàng)建窗口、處理鍵盤鼠標事件和主循環(huán)GLUT 那套回調(diào)模型和教材里“繪圖-事件-重繪”的描述幾乎一一對應課堂實驗用它比直接寫 Win32 消息循環(huán)省太多事。GLEW 負責把 OpenGL 3.0 之后的擴展函數(shù)加載進來沒有它 glGenVertexArrays 這種函數(shù)在 Windows 上根本拿不到地址。GLM 是純頭文件的矩陣庫寫觀察和投影矩陣時不需要自己手推透視矩陣公式。組件職責使用要點freeglut窗口、輸入事件、主循環(huán)回調(diào)函數(shù)注冊后由 glutMainLoop 驅(qū)動GLEW加載現(xiàn)代 OpenGL 擴展函數(shù)必須定義 GLEW_STATIC 再鏈 glew32s.libGLM矩陣、向量、透視投影列主序直接對接 GLSL 的 mat4opengl32.libWindows 系統(tǒng) OpenGL 基礎庫附加依賴項里固定存在為什么不用 DirectX不是不能用而是課程實驗講的是通用圖形學概念OpenGL 在各平臺行為一致固定管線的 glBegin/glEnd 寫法對早期光柵化實驗特別友好。你會在 01、02 號實驗里看到傳統(tǒng)繪制 API到光照紋理實驗再切到著色器正好覆蓋圖形學教學的兩個階段。2.2 工程目錄結(jié)構(gòu)一個解決方案掛六個實驗打開壓縮包第一眼看到的是MyProjects.sln根目錄按實驗編號拆分工程。大多數(shù)實驗是一個main.cpp加少量封裝頭文件個別實驗帶資源目錄整體結(jié)構(gòu)大致如下MyProjects/ ├─ 01_DDA_Bresenham/ │ ├─ src/main.cpp │ └─ README.md ├─ 02_Circle_Ellipse/ ├─ 03_Transform2D/ ├─ 04_ViewProjection/ ├─ 05_Lighting_Material/ ├─ 06_TextureMapping/ ├─ common/ │ ├─ shader.h │ └─ win32_path.h ├─ libs/ │ ├─ freeglut/ # include 與 lib 分平臺存放 │ ├─ glew/ │ └─ glm/ └─ MyProjects.slncommon/不是課程強制的是我在整理代碼時習慣性的收口凡是兩個以上工程都用得到的封裝比如著色器編譯、文件路徑轉(zhuǎn)換都放進公共頭文件。你把每個工程完全獨立也可以但那樣遇到著色器編譯報錯就得復制粘貼六遍檢查代碼公共目錄能少改很多地方。各實驗與課程知識點的對應關系如下工程目錄核心知識點演示重點01_DDA_BresenhamDDA 與 Bresenham 直線生成兩種算法在相同坐標下的造點軌跡02_Circle_Ellipse中點畫圓、橢圓的參數(shù)方程圓對稱性與決策參數(shù)的更新03_Transform2D平移、旋轉(zhuǎn)、縮放的復合矩陣繞任意點旋轉(zhuǎn)的實現(xiàn)04_ViewProjection透視投影、觀察矩陣視錐體與深度測試效果05_Lighting_MaterialBlinn-Phong 光照模型光源位置、材質(zhì)高光06_TextureMapping紋理坐標、采樣、邊界處理四邊形表面的貼圖效果2.3 快速編譯VS 屬性頁里那四個配置項拿到源碼先別急著點運行OpenGL 實驗工程最常見的翻車就是依賴沒配齊。以 03_Transform2D 為例先在 VS 里把包含目錄和庫目錄指到libs/下附加包含目錄 $(SolutionDir)libs\freeglut\include;$(SolutionDir)libs\glew\include;$(SolutionDir)libs\glm 附加庫目錄 $(SolutionDir)libs\freeglut\lib\x64;$(SolutionDir)libs\glew\lib\x64 預處理器定義 GLEW_STATIC;_CRT_SECURE_NO_WARNINGS 附加依賴項 opengl32.lib;freeglut.lib;glew32s.lib用$(SolutionDir)而不是寫死路徑是為了讓你把整個MyProjects目錄換個位置也能編譯。_CRT_SECURE_NO_WARNINGS是讓fopen這類函數(shù)不再報 C4996 警告做紋理加載實驗時能少刷很多屏。如果你只跑 01、02 固定管線實驗GLEW 不配也能運行但想一次把六個實驗全部編譯過建議每個工程統(tǒng)一加這條預處理器定義避免同一套代碼在 Debug 和 Release 下行為不一致那是后續(xù)最常見的一個坑。3. 核心模塊拆解一個三角形從頂點到像素的完整鏈路3.1 窗口創(chuàng)建與 GLUT 回調(diào)GLUT 死循環(huán)想退出來怎么辦三角形能顯示到屏幕上起點是窗口初始化和回調(diào)注冊。這套代碼在實驗包里每個工程都可以單獨抽出來看int main(int argc, char** argv) { glutInit(argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 600); glutCreateWindow(CG Lab); // 注意GLEW 必須在窗口創(chuàng)建之后才能初始化 glewExperimental GL_TRUE; glewInit(); glutReshapeFunc(reshape); glutDisplayFunc(display); glutKeyboardFunc(keyboard); setupScene(); // 創(chuàng)建 VAO、VBO、著色器 glutMainLoop(); return 0; // 這行實際執(zhí)行不到 }GLUT_DOUBLE申請雙緩沖避免畫面閃爍GLUT_DEPTH給深度緩沖區(qū)騰地方三維實驗里必須加否則深度測試等于沒開。glutMainLoop一旦進入就阻塞在這里不斷派發(fā)事件后面的return 0不會執(zhí)行。想讓程序退出正確做法是調(diào)用glutLeaveMainLoop()而不是硬exit。3.2 著色器編譯為什么 glShaderSource 的第四個參數(shù)要傳 nullptr三角形的 GPU 端渲染離不開著色器。下面是精簡后的著色器編譯封裝注意看glShaderSource的參數(shù)GLuint CompileShader(GLenum type, const char* src) { GLuint shader glCreateShader(type); glShaderSource(shader, 1, src, nullptr); // 按\0截斷省去手動數(shù)長度 glCompileShader(shader); GLint ok 0; glGetShaderiv(shader, GL_COMPILE_STATUS, ok); if (!ok) { char log[512] {0}; glGetShaderInfoLog(shader, 511, nullptr, log); printf(shader compile error:\n%s\n, log); glDeleteShader(shader); return 0; } return shader; }glShaderSource的第四個參數(shù)表示每個字符串的長度。傳nullptr時驅(qū)動按 C 字符串的\0結(jié)尾自動截斷日常寫常量著色器源碼最省事。但如果從文件里讀代碼用std::ifstream讀取后字符串長度不等于文件長度把content.c_str()傳進去其實也沒問題真正容易踩的是用read把內(nèi)容讀進一個未補\0的char數(shù)組這時第四個參數(shù)必須顯式傳實際長度。編譯后用glGetShaderiv查GL_COMPILE_STATUS不是查返回指針返回值只代表函數(shù)調(diào)用是否成功我看到太多人忽略狀態(tài)直接鏈到程序里最后畫面黑得毫無頭緒。3.3 VAO/VBO把頂點屬性和緩沖對象綁定在一起從數(shù)據(jù)到像素中間得有頂點緩沖。下面這段是實驗里最常見的三角形初始化寫法float vertices[] { // x y z r g b -0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f }; GLuint vao, vbo; glGenVertexArrays(1, vao); glGenBuffers(1, vbo); glBindVertexArray(vao); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // 第 0 個頂點屬性位置取前 3 個 float glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); // 第 1 個頂點屬性顏色跨過前面 3 個 float glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float))); glEnableVertexAttribArray(1);這段代碼的核心是步長和偏移量。每個頂點包含 6 個float位置在前 3 個顏色在后 3 個所以屬性步長是6 * sizeof(float)。位置偏移是 0顏色偏移要從第 3 個float開始寫成(void*)(3 * sizeof(float))。GL_STATIC_DRAW表示數(shù)據(jù)幾乎不變驅(qū)動可以把它放到更合適的內(nèi)存位置如果每幀都在改頂點坐標就改成GL_DYNAMIC_DRAW。3.4 繪制與 MVP 矩陣兩個矩陣相乘的順序別搞反頂點數(shù)據(jù)準備好后display回調(diào)里做的事情是從 CPU 側(cè)把模型、觀察、投影三個矩陣合起來傳給著色器的 uniform再發(fā)起繪制void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glUseProgram(shaderProgram); glm::mat4 proj glm::perspective(45.0f, (float)WIDTH / (float)HEIGHT, 0.1f, 100.0f); glm::mat4 view glm::lookAt( glm::vec3(0.0f, 0.0f, 5.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f)); glm::mat4 model glm::rotate(glm::mat4(1.0f), rotAngle, glm::vec3(0.0f, 1.0f, 0.0f)); glm::mat4 mvp proj * view * model; glUniformMatrix4fv(uMVP, 1, GL_FALSE, mvp[0][0]); glBindVertexArray(vao); glDrawArrays(GL_TRIANGLES, 0, 3); glutSwapBuffers(); }OpenGL 使用列主序矩陣GLM 的mat4布局和 GLSL 一致傳給 uniform 時不需要轉(zhuǎn)置所以第三個參數(shù)傳GL_FALSE。矩陣相乘的順序是proj * view * model頂點點v實際經(jīng)歷的是proj * (view * (model * v))先模型變換到世界再觀察變換到相機最后投影到裁剪空間。把順序?qū)懗蒻odel * view * proj是旋轉(zhuǎn)平移混亂的重災區(qū)后面避坑章會專門講。glDrawArrays的第一個參數(shù)決定圖元類型GL_TRIANGLES每三個頂點組成一個三角形頂點數(shù)是 3所以第三個參數(shù)傳 3。如果三角形畫不出來或者位置不對先檢查頂點數(shù)組里的坐標范圍再查矩陣不要一上來就懷疑顯卡驅(qū)動。4. 實驗代碼逐層分析從畫線、變換到光照的算法落地4.1 DDA 與 Bresenham浮點遞增和整數(shù)糾偏的兩條路線前兩個實驗是光柵化的地基。DDA 思路直接把線段兩端點的dx、dy拆成若干小步每步加一次增量void dda(int x0, int y0, int x1, int y1) { float dx x1 - x0; float dy y1 - y0; int steps max(abs(dx), abs(dy)); float xInc dx / steps; float yInc dy / steps; float x x0, y y0; for (int i 0; i steps; i) { setPixel(round(x), round(y)); x xInc; y yInc; } }步數(shù)取dx、dy絕對值較大的一方是為了保證步長不超過一個像素。DDA 的問題在于浮點運算和round循環(huán)次數(shù)多了會有積累誤差。Bresenham 則完全拋棄浮點用誤差項err判斷下一幀該走哪個方向void bresenham(int x0, int y0, int x1, int y1) { int dx abs(x1 - x0), sx x0 x1 ? 1 : -1; int dy -abs(y1 - y0), sy y0 y1 ? 1 : -1; int err dx dy; while (true) { setPixel(x0, y0); if (x0 x1 y0 y1) break; int e2 2 * err; if (e2 dy) { err dy; x0 sx; } if (e2 dx) { err dx; y0 sy; } } }這里的sy寫成負的絕對值是刻意讓err可以同時判斷 x 和 y 兩個方向。兩個算法在 01 號實驗里都保留了切換繪制函數(shù)就能直觀看到同一個端點對產(chǎn)生的點陣差異。實驗報告里最值得寫的不是復雜度而是四邊形區(qū)域里哪個算法對邊緣更平滑。4.2 中點畫圓一個決策值如何取代平方根運算畫圓如果直接用參數(shù)方程x cx r * cosθ每一幀都要算三角函數(shù)。中點畫圓算法用決策值d的符號判斷下一個像素選哪個完全繞開三角函數(shù)void midpointCircle(int cx, int cy, int r) { int x 0, y r; int d 1 - r; while (x y) { circlePoints(cx, cy, x, y); x; if (d 0) d 2 * x 1; else { y--; d 2 * (x - y) 1; } } }d的初始值是1 - r對應圓與網(wǎng)格線的首個中點位置每次 x 遞增后如果判定中點落在圓內(nèi)y 不變否則 y 減一。circlePoints利用圓的八對稱性把(x, y)同時映射為另外 7 個點所以只需要掃描八分之一圓弧。動手改實驗時可以把d的更新公式打印出來對比 y 的遞減趨勢比直接背公式印象深刻。4.3 復合變換的順序先縮放還是先平移結(jié)果完全不同03 號實驗的二維變換最容易出錯的不是單個矩陣而是復合順序。用 GLM 寫變換看著是按代碼順序執(zhí)行的glm::mat4 m(1.0f); m glm::translate(m, glm::vec3(tx, ty, 0)); m glm::rotate(m, glm::radians(angle), glm::vec3(0, 0, 1)); m glm::scale(m, glm::vec3(sx, sy, 1)); // 等價效果: v T * R * S * v因為頂點是列向量矩陣組合后實際先對頂點做縮放再做旋轉(zhuǎn)最后平移。如果希望先平移到某個位置再縮放就要把代碼里translate和scale的調(diào)用順序反過來而不是想當然地認為“寫在前面的先執(zhí)行”。繞任意點旋轉(zhuǎn)是另一個常見需求。正確的復合方式是“先平移到原點旋轉(zhuǎn)再平移回去”glm::mat4 m glm::mat4(1.0f); m glm::translate(m, glm::vec3(px, py, 0)); m glm::rotate(m, glm::radians(angle), glm::vec3(0, 0, 1)); m glm::translate(m, glm::vec3(-px, -py, 0));這段代碼的含義是T(p) * R * T(-p)對點來說先回了原點轉(zhuǎn)完再回原位。實驗報告里一般會要求畫一個矩形繞自身中心旋轉(zhuǎn)你在畫矩形時如果頂點是相對中心點定義的那第一個translate(-px, -py)就可以省略這個細節(jié)值得寫進說明。4.4 觀察、投影與 Blinn-Phong 光照固定管線到著色器的一小步04 號實驗里還有部分固定管線寫法方便和著色器版本做對比glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, aspect, 0.1, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, 0, 6, 0, 0, 0, 0, 1, 0);gluPerspective的第一個參數(shù)是垂直視場角單位是度不是弧度第二個參數(shù)aspect是窗口寬高比后兩個參數(shù)分別是近裁剪面和遠裁剪面到相機的距離。這兩個距離的比值會影響深度緩沖的精度近遠差得太大時遠處物體會出現(xiàn)深度沖突表現(xiàn)為三角形表面閃爍。gluLookAt的三組參數(shù)分別是眼睛位置、觀察目標點、視口向上的方向向量。到 05 號光照實驗就進入可編程管線Blinn-Phong 是課程里最通用的模型它的片元著色器核心計算如下vec3 N normalize(normal); vec3 L normalize(lightPos - fragPos); vec3 V normalize(viewPos - fragPos); vec3 H normalize(L V); float diff max(dot(N, L), 0.0); float spec pow(max(dot(N, H), 0.0), shininess); vec3 color ambient diff * lightColor spec * specColor;H是半程向量把反射方向的計算換成了L V的歸一化性能更好且效果接近。寫這個著色器時最常見的低級錯誤是忘記normalize導致dot結(jié)果偏大或偏小高光區(qū)域突然閃爍另一個是把法線放在頂點著色器里變換完直接插值沒有在片元里重新歸一化模型轉(zhuǎn)動時高光會跟著飄。這些現(xiàn)象在 05 號實驗的窗口里都能復現(xiàn)是調(diào)光照的必經(jīng)之路。5. 常見問題黑屏、白板和亂碼的排查路徑圖形學實驗排查不能靠瞪先確認“窗口有沒有創(chuàng)建出來、OpenGL 有沒有初始化、數(shù)據(jù)有沒有進管線、著色器有沒有鏈接成功”這四層再動手改代碼。下面這五條是這套實驗包里出現(xiàn)頻率最高的翻車現(xiàn)場。5.1 窗口能開畫面黑屏glewInit 放錯了時機現(xiàn)象窗口正常彈出但三角形不顯示glGetError()偶爾返回GL_INVALID_ENUM。原因glewInit()在有合法 GL 上下文前調(diào)用擴展函數(shù)指針加載失敗后續(xù)所有g(shù)lGen*調(diào)用都拿到無效對象。解決把glewInit放到glutCreateWindow之后并檢查返回值glutCreateWindow(CG Lab); glewExperimental GL_TRUE; GLenum err glewInit(); if (err ! GLEW_OK) { printf(glew init failed: %s\n, glewGetErrorString(err)); return; }glewExperimental置GL_TRUE是為了讓它加載一些驅(qū)動沒有主動暴露的實驗性擴展。如果不想被黑屏折磨這段代碼應該作為所有著色器工程的固定前綴。5.2 紋理貼上去是灰色中文路徑和紋理翻轉(zhuǎn)各占一半現(xiàn)象06 號實驗的紋理加載函數(shù)返回成功但屏幕上模型是一整塊灰白色或者紋理上下顛倒。原因圖像讀取庫在 Windows 下遇到中文目錄或中文文件名時路徑解析失敗另一類問題是圖片的行對齊規(guī)則和 OpenGL 默認的GL_UNPACK_ALIGNMENT4不一致寬高不是 4 的倍數(shù)時讀出來的像素就是錯位的。解決把工程和資源放到純英文路徑下這個“玄學”問題通常立刻消失如果只是上下顛倒用下面這行調(diào)整像素上傳對齊方式glPixelStorei(GL_UNPACK_ALIGNMENT, 1);GL_UNPACK_ALIGNMENT默認是 4表示每行像素在內(nèi)存里按 4 字節(jié)對齊。BMP 這類無壓縮格式每行往往正好 4 字節(jié)對齊但遇到奇數(shù)寬度就會錯位。把它設成 1 是按單字節(jié)緊湊排列兼容性最好代價是上傳速度略降課程實驗里完全夠用。5.3 Debug 跑得好好的Release 鏈接報幾十個未解析符號現(xiàn)象Debug 編譯正常切到 Release 后鏈接器報一堆__imp_glGenVertexArrays或__imp_wglChoosePixelFormat開頭的未解析外部符號。原因只改了 Debug 配置的依賴路徑Release 配置里 GLEW 和 freeglut 的庫路徑還是空的或者是鏈接了glew32.lib卻忘記定義GLEW_STATIC導致靜態(tài)庫和動態(tài)庫的符號約定對不上。解決打開 VS 屬性頁左上角配置選“所有配置”平臺選“所有平臺”把第二章里那四項依賴統(tǒng)一填一遍。還有一個容易忽略的點freeglut.dll和glew32.dll這些動態(tài)庫必須和生成的 exe 在同一目錄否則雙擊運行時直接彈“找不到 dll”這種現(xiàn)象更像是工程配置壞了但其實只是文件沒復制到位。5.4 物體旋轉(zhuǎn)后總是平漂一段復合矩陣順序反了現(xiàn)象用鍵盤旋轉(zhuǎn)物體時它不繞自身中心轉(zhuǎn)而是邊轉(zhuǎn)邊朝某個方向平移旋轉(zhuǎn)中心明顯不對。原因模型矩陣里平移和旋轉(zhuǎn)的順序?qū)懛戳?。比如寫成model rotate * translate頂點先被平移、再旋轉(zhuǎn)等于繞著世界原點旋轉(zhuǎn)一個已經(jīng)偏移的物體看起來就像額外平移了一段。解決先確認你的頂點坐標是不是相對物體中心定義的。如果不是要先把物體移回原點、旋轉(zhuǎn)、再移回去glm::mat4 model glm::translate(glm::mat4(1.0f), glm::vec3(centerX, centerY, 0)) * glm::rotate(glm::mat4(1.0f), angle, glm::vec3(0, 0, 1)) * glm::translate(glm::mat4(1.0f), glm::vec3(-centerX, -centerY, 0));這個式子從右往左讀先移到原點旋轉(zhuǎn)再平移回原位置。矩陣乘法是圖形學實驗里調(diào)試時間最長的地方遇到位置不對先把旋轉(zhuǎn)角度固定成 0觀察平移是否單獨正常再逐步疊加旋轉(zhuǎn)。5.5 著色器編譯通過一調(diào)用就黑屏或崩潰忘了檢查 Link 狀態(tài)現(xiàn)象CompileShader返回的 shader 對象不是 0但鏈接完程序后畫面還是黑的控制臺也沒有任何報錯。原因glLinkProgram之后沒有檢查GL_LINK_STATUS很多著色器編譯通過但變量名拼寫錯誤鏈接時 uniform 被優(yōu)化掉glGetUniformLocation返回 -1后續(xù)glUniformMatrix4fv把一個非法地址傳進去。解決鏈接完成后強制加一段日志檢查同時打印 uniform 地址glLinkProgram(prog); GLint linked 0; glGetProgramiv(prog, GL_LINK_STATUS, linked); if (!linked) { char log[512]; glGetProgramInfoLog(prog, 511, nullptr, log); printf(link error:\n%s\n, log); } GLint u glGetUniformLocation(prog, mvp); if (u 0) printf(uniform mvp not found\n);不要靠肉眼對比著色器字符串里的名字直接讓程序把 uniform 地址打出來。從這套實驗包開始我給自己定了一條規(guī)則任何 gl 相關的返回值都要檢查錯誤狀態(tài)再小的工程也一樣這條習慣能省掉一半的調(diào)試時間。6. 二次開發(fā)把分散實驗改造成一個可交互的圖形學 Demo六個實驗各自獨立運行沒問題但它們之間沒有統(tǒng)一入口。二次開發(fā)的第一步是把不同實驗的繪制邏輯抽象成同一種接口這樣后續(xù)想加一個“實驗切換菜單”就很容易。class IRenderable { public: virtual void Initialize() 0; virtual void Render(float dt) 0; virtual void OnKey(unsigned char key, int x, int y) 0; virtual ~IRenderable() {} };每個實驗工程只要繼承這個接口把原來的init、display、keyboard搬進三個虛函數(shù)即可。第二步是做一個簡單的場景管理器用數(shù)字鍵 1 到 6 切換不同的實驗class SceneManager { public: static SceneManager Instance() { static SceneManager inst; return inst; } void Register(int id, std::unique_ptrIRenderable scene) { scenes_[id] std::move(scene); } void SwitchTo(int id) { current_ scenes_[id].get(); } IRenderable* Current() { return current_; } private: std::mapint, std::unique_ptrIRenderable scenes_; IRenderable* current_ nullptr; };注冊順序放在main里和工程目錄編號保持一致。這樣做的好處是每個實驗原來的main.cpp不再擁有獨立的glutMainLoop而是統(tǒng)一交給框架調(diào)度主循環(huán)只保留一次glutDisplayFunc(display)內(nèi)部轉(zhuǎn)發(fā)給當前場景。改造完成后驗證方式很簡單依次按 1 到 6確認每個場景都能渲染且不會串狀態(tài)再切回場景 1看看之前建的 VAO 是否還在。如果還想更進一步就把固定管線的 01 到 03 號實驗遷移到著色器版本用glDrawArrays(GL_POINTS, ...)替代glBegin(GL_POINTS)。這個遷移過程能幫你真正搞清楚固定管線的矩陣棧和現(xiàn)代管線的 uniform 之間是什么關系而不是只會復制粘貼。我當年把實驗合并成 Demo 后以為在一臺機器上跑通就萬事大吉結(jié)果換到另一臺機器上演示時DLL 沒復制、紋理路徑寫的是絕對路徑現(xiàn)場直接翻車。從那以后我每次改完都強制走一遍流程清空輸出目錄、Debug 和 Release 分別編譯、把 DLL 和資源改成相對路徑、再換一個目錄重新跑一次。這套血淚流程雖然看著笨但保住了很多次演示。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文字幕免费看大片| 秋霞无码av鲁丝片一区| 欧美性爱无码一区二区三区| 欧美性猛交美女自慰91| 亚洲极品| 亚洲少妇综合在线播放| 国产女人9999| 蜜臀久久99精品久久久老,,| 啊啊啊免费| 日韩久久激情精品| 亚洲日本天堂| 操操逼操操逼操操逼逼| 国产精品制服丝袜中文字幕日韩一区二区三区 | 欧美人与动性人交a| 日韩精品国产一区二区| 在线视频一区二区传媒| 秋霞操逼片| 天天添天天干电影| 国产传媒一区二区三区| 亚洲天堂性爱| 久久久蜜桃臀无码视频| 亚洲精品久久久久久久久豆丁网| 亚州综合网| 91欧美| 亚洲91综合| 2017人人操,人人摸| 无码精品一区二区三区潘金莲| 欧美亚洲玖玖玖| 中文字幕免费在线观看| 国产精品99久久久www| 超碰爽人妻熟女Av| 精品午夜福利| 久久99热这里只频精品6学生| 综合网亚洲1| 日本精品无码三级网站| 欧美18禁91| 91在线美女| 啪啪啪综合| 五月婷婷六月激情| 中国人高清www色视频免费| 亚洲麻豆精品二区三区| 日韩欧美三级| 在现视频女上位好爽| 婷婷人妻激情| 清纯唯美激情四射| www.av在线视频| 亚州综合AⅤ| 麻花豆传媒剧国产MV出差| 亚洲精品欧美专业| 手机在线观看不卡无码av| 久久久久久夜夜夜夜夜| 百度百度日本操逼| 91操人| 99热在线观看| 综合久久9| 999精品国产高清一区二区| 色婷婷在线视频| 一本色道久久综合熟妇| 亚洲综合成人网| 久久精品无码一区二区三区| 欧美综合色综合| 亞洲久久直播| 亚洲男人的天堂va亚洲男人社| 久久精品人体AV| 中国AV美女| 老女人91| 日韩有码一区三区| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 69视频入口| 中文字幕精品乱码| 婷婷五月天基地| 热99这里有精品综合久久| 一区中文字幕二区日韩| 99久久婷婷丁香| 九九综合色| 国产精品一区在线播放| 中文字日本乱码| 国产熟女乱论| 日本操逼视频不卡直接放| 又黄又粗又硬又长又大| 亚洲国产精品久久久久久久久久| 欧美国产欧美在线观看| 91一区二匹| 久久久一级| 被男人添B超爽视频| 亚洲AV永久无码精品成人调教| 91校园春色长篇| 成人a级高清视频在线观看| Julia Annxxxxx| 天天影视网综合少妇| 很黄很色的视频在线观看| 日韩中文字幕二区| 91久操| a人片中文字幕一区二区| 久久伊人五月天| 亚洲丝袜在线观看| 久久精品操| 91碰超| 白丝被操91| 亚洲97p| 天天舔天天 | 欧美成人贴图| 色娱乐色呦呦夜夜夜夜av| 久久久五月天| 97亚洲综合在线| 91丝袜美腿网站| 丝袜亚洲综合| 五月丁香综合啪啪| 夜夜国产一区| 欧美精品23| 久久久亚洲精品中文字幕人妻| 伊人AAA| 日日黄色三级网站| 欧美精品久久久久久久久88| 中文字幕超碰CAO| 亚洲黑丝在线| 天天干天天日天天射黄色片| 老熟女91av| 97欧美色综合| 色999亚洲人成色| 亚洲操人| 亚洲黄片免费在线播放| 熟妇高潮一区二区免费视频| 一级黄色性爱A级片| 亚洲少妇视频| 国产农村妇女精品1区二区| 草草影院最新网址| 午夜一区| julia中文字幕在线观看| 凹凸 69堂 在线播放| 日韩一级二级| 亚洲精品成人| 九一综合网| 日韩性爱高清免费视频| 国产精品点击进入在线影院高清| 亚洲性高潮| 99热这里是精品| 国产一区二区视频在线播放| 日韩欧美亚洲一区二区三区影院| 欧美性爱日韩高清| 国产野战露脸在线播放| 综合欧美激情网| 亚一综合久久久久久久久久| 五码视频在线观看| 黄色电影在线播放综合网站| 一级AV性爱| 另类亚洲一区二区三区| 国产精品视频在线观看| 午夜激情成人在线观看| 国产熟女一区二区丰满| 97色婷| www.色婷婷色综合| 老熟妇一区二区三区| 好爽要喷了| 亚洲中文字幕日产无码久久| 国模不卡一本二本三电影| 国产精品99久久久www| 亚洲成人在线高清| 午夜120视频在线观看| 操逼www.| 久久综合九九| 亚洲精品久| 红桃视频高潮| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧美日韩人妻婷婷一区| 香蕉大久久久| 久久m| 蜜臀av中文字幕| 久久亚洲熟妇在线视频| 97国产伦理| 欧美日韩操操操| 久久免费精彩视频| 人妻在线大香蕉| 大香蕉欧美伊| 国产不卡精品91| 五月天婷婷基地| 国产精品ⅴ无码大片在线看.| 人人妻天天做天天爽| 少妇激情AV| 国产91亚洲精品一区二区三区| 天美传媒一二三区永久网站| 女人久久久| 九九色精品| 亚洲综合嫩| 日韩乱伦影音先锋| 亚洲天堂情色| 嗯啊不要在线观看嗯啊| 蜜桃av综合网发布| 久久久久久人| www.久久制服糖| 精品视频一区二区| 欧州激情视频在线一区二区| 中文字幕成人理论在线| 60秒免费小视频| 久久人妻少妇| 免费观看欧美日韩操逼视频| 国产熟女免费观看久久| 91成人国产综合久久精品蜜月| 91挑色欧美| 亚洲无码一区成人免费午夜| 老司机老司机午夜影院| 欧美日韩国产另类综合| 有码人妻系列| 劲爆欧美人妖三区91| 97亚洲在线| 中文字幕精品一区二区精| 色老牛| 国产欧美日产一区二区三区 - 国产欧美日| 亚洲欧美骚| 久久机热| 高清国产无码av| 999久久久久久久久| 国模限制级电影| 亚洲天堂资源| 影音先锋乱伦资源| 女人双腿搬开让男人桶| 精品人妻一区二区三区四区| 操碰97| 日韩专区久久久| 欧美美女在线高潮999| 无码91| 国产视频一区二区免费| 人妻aa| 色综合av男人天堂| 黄片com.| 日语五十路和六十路亚洲国产精品| 超碰 欧美| 亚洲有码 欧美精品| 2025年A片视频精品| 欧美在线视频观看一二三四区高清| 久久天天摸| 九九九九久久久| 亚洲情色第一页| 亚洲精品一区二区精品| 中字乱伦AV| 老司机射| 亚洲暴力强奸AV| 亚洲欧洲中文日韩女优乱码| 亚洲精品美女操逼| 青青草好吊色| 国产日产欧产美韩系列麻豆免费| 疯操AV| 美国一区二区免费视频| 国产最新小视频在线播放下载 | 日本天天操| 人妻夜夜爽天天爽三区麻豆AV网站| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 99亚洲精品| 亚洲精品蜜桃久久久| 欧美日韩亚洲高清不卡一区二区三区| 成人无码在线超碰网| 清纯唯美综合| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 亚洲精品一二区| 蜜桃av综合网发布| www.大香| 久久久亚洲Av| 国产亚洲精品美女久久久| 97欧美色| 欧洲乱码一区二区| 99啪啪| 亚洲AV无码AV吞精久久久久| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日本精品性生活久久久| 抽插爽| 99热啪啪| 日本有码影片下载| 一区,二区,三区视频| 校园春色欧美色图| 国厂麻豆77q4| 国产成人资源| 草草电影院| 国产无码精品成人| 91|九色|国产熟女| 国产精品色哟哟| 日日做夜狠狠爱欧美黑人| 亚洲综合图色在线| 夜夜爽夜夜操| 国产精品亚洲高清在线| 很很干很很操| 欧美丝袜美女电影一二三四区| 黄色污污污污污污网站| 久久久不能久久久久| 午夜欧美J进J出白浆流出久久久| 欧洲精品一二三在线| 精品一久久久| 欧美 亚洲 制服 精品| 黄片com.| 干b在线性社区| 深夜激情| 中文字幕91页| 久无码| 新怡红院| 人人干人人操人人爱| 日韩图区 偷拍| 嫖老熟女A片一二三区| 四虎永久在线精品免费网址| 屁股久久久久久久久| 综合欧美亚洲| 国产成人一级av88| 亚洲第一页欧美| 97视频900| 欧美一二三区四五区| 97欧美久久久久久久| 伦理弟一页| 9精品久久久久| 十八禁av无码免费网站APP| 密桃99999| 99999这里都精品| 精品亚洲成人免费在线| 国产一级αv免费看片| 欧美性爱一区二区三区四区| 91亚洲欧美激情| 国产精品久久久久久亚洲色欲| 全免费a敌肛交毛片免费| 97硬碰| 伊人宅男大香蕉 | 日本加勒比无码专区一二三| 九九视频黄色片| 日韩欧无码一区二区三区免费不卡| 婷婷五月天成人| a男人的天堂| 69人妻精品丰满熟女区| 91小视频| 午夜黄色免费在线观看| 欧美韩国你懂得在线| 天天草天天日| 色av中文字| 曰韩香蕉97| 俄罗斯一区二区视频在线观看| 嗯嗯嗯好爽| 黑人在线91| 亚洲av无码成人精品国产| 综合一区二区影视| 日B操| 亚洲网自拍| 亚洲精品自拍| 欧美伦乱爱| 亚洲天堂精品日韩电影| xxx亚洲午夜天堂| 美欧老女人97| 亚洲九九九| 116美女午夜| 日产操逼| 热久久99999| 一类无码操逼视频| 91丝袜美腿片| 99久久久久久久久| 婷婷精品久久av影视| 超碰人妻久久人妻中文97| 91 欧美| 国产馆极品诱惑| 国产精品农村妇女精品| 天天日少妇逼AV| 国产精品农村妇女精品| 天天欧美欧美亚洲网| 国产极品粉嫩馒头一线天av| 欧美啪啪色吧在线| 美日韩男女操屄视频| 五月丁香激情综合| 91人妻视频| 国产精品人妻免费精品| 91强在线播放| 国产一区二区三区高清视频| 亚洲第一男人天堂| 69少妇一区二区| 人妻熟女字幕一区二区| 超碰97欧美在线| 婷婷10月天青娱乐| 国产一| 学生妹天天看| 后入精品| 色综合一本| 亚洲国产成人7777| 干B网| 尤物视频偷拍免费| 91久久| 夜夜 中文视频rt| 91美女视频在线观看| 91久久午夜无码鲁丝片久久人妻| 久久AV无码AV| 色综合20p| 色婷婷综合久久久久中文一区二区| 亚洲激情综合另类男同| 人妻丝袜美腿中文字幕| 99热97| 国产日韩在线播放av| 免费av在线播放二区| 干B| 使劲用力艹少妇视频一区二区| 香蕉在线一区二区三区| 奇米四色影视777久久久| 无码人妻一区二区三区四区老鸭窝| 99www.bibizy香蕉资源国产一区二区三区高清 | 在线观看AV片| 97欧美综合网| 欧美激情久| 超碰99在线观看| 亚洲熟女精品| 蜜臀久久99精品久久久久久-DVD| 秋霞男人网| www.狠狠| 欧美成年人性爱视频免费观看| a人片中文字幕一区二区| 日日爽夜夜爽| 手机在线中文字幕国产| 69一区二区| 亚洲免费97免费| 婷婷五月天丁香| 中文字幕奈奈美被公侵犯| 69天堂| 久久久青青草| 97超级色碰碰| 欧洲亚洲人人爽爽视频| 麻豆九九九| 亚洲色图伊人网| 久久首页| 热思思免费视频| 欧美综合亚洲| 亚洲熟久久| 91啪9色| 亚洲中文字幕精品久久久久久直播 | 欧美激情 亚洲色图| 91性高| 美女黄页| 狠狠综合网| 久久XX| 乱伦图一区| 久操91视频| 精品一区二区三区丰满熟女-亚洲欧美一区| 综合天天网| 日本天堂网| 无码逼| 伊人一区二区在线播放| 夜夜爽夜夜| 激情小说亚洲| 久96热在线观看视频| 精品一区二区亚洲国产| 3p国产色噜噜一区| 51久久夜色精品国产麻豆| 国产传媒日韩| 岛国AV一区二区电影| 六月丁香五月婷婷| 免费久久9999| 少妇六月天| 99久久e免费热视| 久久性爱视频99| 美女尤物人人操| 久久久国产精品亚洲精品| 伊人久久国产免费观看视频| 91人妻丝袜无码| 国语人妻精彩刺激| 欧美大香蕉专区网| 国产精品香蕉热久久新品| 久久xx| 婷婷激情一区二区三区俺也去| 又摸又舔在线观看网站| 神马九九九| 97久久久久| 极品五月天噜噜| 琪琪精品免费一区二区三区| 东京热视频网| 一本久道久久综合狠狠爱一密臀精| 亚洲图片视频小说| 超碰偷拍| 久久久久久加勒比| 熟妇女伦乱视频| 日韩精品-原创伙伴| 三四中文字幕| 97色在线视频| 国产精品天堂| 97在线免费看视频| 久久久久久久性爱| 亚洲色图欧美| 精品人妻视频入口| 久久久久久日韩| 亚洲天天综合| 欧美日韩人人早| 久久精品国产精品一区| 5月婷婷6月六月丁香| 亚洲天堂另类小说男人| 大逼色网站| av天天在线| 久久伊人最新网址视频| 18禁看网站一区| 欧美日本成人一区二区| 五月天我淫我色av| 日韩一区二区精彩视频| 欧美色图亚洲色| 亚洲另类天堂| 欧洲在线性爱视频| 亚洲国产精品无码AV在线| 国产绿奴视频在线观看| 欧美色女人| 国产色产精品在线观看| 日本1区2区不卡视频| 超97在线精品视频| 青青草影视蜜久久| 国产精品岛国片在线观看| 嫩草 人人网精品| 香蕉国产精品麻豆亚洲欧美日韩| 中文字暮97| 日日骚一区二区三区| 亚洲日韩肥臀视频在线观看| 亚洲91色在线| 五月丁香六月| 欧美在线伊人色| 亚洲 91 在线| 影音先锋中文字幕日本好一区二区| 校园春色亚洲欧洲| 亚洲情色欧美| 蜜臀无码视频在线观看| 五月婷婷啪啪| 久久精品国产久精国产| ji熟女.com| 少妇熟女一区二区三区| 国产一进一出视频网站| 加勒比海成人视频网| 999亚洲国产视频| 欧天美中出| 国产免费一区二区在线A片视频| 超碰偷拍| 欧美亚洲第1页| 亚洲色图欧美色图制服丝袜| 欧美爱三级日韩久久| 国产不良强奸视频免费看| 爱射综合| 日本成熟少妇A∨网站| 最新亚洲风情电影| 婷婷五月天色网| 99操逼| 啊嗯好大视频在线观看| 能在线播放的国产三级| 殴美大黄片| 天天日天天干天天整| 色香伊人| 久久亚洲AV无码专区首页| 中文在线久久字幕| 婷婷伊人一区| 色偷偷男人的天堂麻豆| 高清国产性猛交xxxx乱大交| 国产一区二区三区,在线观看观看| av中文字幕在线熟女| AV色五月天| 免费a在线播放v| 99久在线精品99re8蜜桃| 操逼1区| 熟女熟妇伦久久影院毛片一区二区 | 欧美日日人人天天| 久久有码视频| 成人黑料社久久| 绑缚麻绳人妻寝取完整版| 欧美日本天堂| 亚洲图片激情小说| 超碰av人人人| 人人操人人操草草| av在线浏览| 精品少妇999| 99国产人成精品| 白嫩91在线亚洲| 人妻 中文 日韩| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 欧亚日韩中文在线| 欧美躁死她一区二区| 青娱乐国产剧情av一区| 色鬼在线综合| 大香蕉免费乱伦视频| 91丝袜熟女| 可以看的av| 国产白丝av| 999综合色| 色色亚洲| 日韩色欲久久一二三四区| 欧美劲爆第一页| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 亚洲熟女乱熟乱熟妇综合网二区| 性爱网站一区二区| 色路综合| 九七毛片九九毛片| 青青草在线视频人人想人人上 | 午夜精品视频777| 51国产午夜精品视频| 欧美中日韩XXXX| 国产乱人妻精品入口| 强奸xx国产| 99操逼| 欧美亚洲se91| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 亚洲AV色图| 色大香蕉97N| 日韩精品.久久精品.AV女优.天美传媒| 日韩综合无码色欲vv| 亚洲精品蜜桃久久久| 青青草国产亚洲精品久久| 女人爽到高潮潮喷18禁网站| 人人艹亚洲| 亚洲人综合| 男人的天堂2000| www.久久爱| 久操凹凸视频| 国产精品视频自拍在线| 亚州综合网| 久久精品久久久久久久| 天堂亚洲精品| 骚鸭AV| 97综合久第一页| 久久久久亚洲一区女同性恋中文字幕| 97天天爽| 天天透伊人| 97久久资源| 97视频网站在线观看| 久久久久国产亚洲一区欧美色图日韩| 综合色图区| 国产热RE99久久6国产精品首| 日韩人妻播放| 成人七区| 中文字幕一区日韩精| 人妻精品视频一区二区| 啊v视频在线观看| 丁香五月天啪啪| 久操九九九九| 欧美熟女少妇| 爽爽爽免费视频| 欧洲精品一二三在线| 久久久久久久久国产| 九九九九一区| 精品视频一二三中文| 91人妻人人澡人人爽人人精品| 欧美另类天堂| 夜夜骑夜夜操| 国产精品自拍xxxx| 国产成人网站在线观看| 91老司机在线视频免费观看| 91亚州欧美| 日韩色图 一区二区| 亚洲三级。日韩三级| 国产9区| 蜜桃成人1区2区3区| 亚洲日韩美国人妻| 在线播放成人网站| 盗摄 精品 另类 一区| 屌妞视频久久久久久久久久久久| 精品二999| 污电影在线观看| 91丝袜| 夜夜天天噜狠狠爱2021| 99ri视频| 久久久久久久久久久久久久久久9| 91色射| 99久久99久久免费精品蜜臀| 久久久久久电影| 一二三区在线| 劲爆欧美人妖三区91| 人妻天天爽夜夜爽2| 91综合在线| 无码乱人伦中文视频| 在线天堂999| 大香久久| 国内毛片免费h片在线| 蜜臀人妻少妇久久在线观看| 97这里有精品| 亚洲成人性爱在线观看| 欧美黑人与女人91~| 玖玖久久久| 日韩黄色一区二区三区| 久久精品老司| 高清国产精品福利网站| 日韩人妻一区二区精品| 亚熟hd视频在线| 亚洲欧美高清无码| 日本人体九九九九九九| 九九九九热只有精品| 欧美东京热精品A∨| 伊人大香蕉在线| 91人人| 97在线免费看| 干妹子| 亚洲砖码砖专无区2023| 精品人妻一区春色| 日躁天天爽爽| 爽爽淫人网| 欧美 亚洲精品首页| 亚洲高清无码免费观看视频| 校园春色美腿丝袜| 欧美日韩第一页| 99精品九九九九九九| 狠狠干婷婷| 91亚洲人| 午夜精品99久久久久传媒| 性色A∨91| 久操99| 中国操逼无码| 欧美传媒一区| 一区二区娱乐网站| 四虎影视精品| 欧美天天综| 国产综合在线视频网站| 精品九九淫乱男| 人人天天干干| 综合久久2017| 亚洲男人天堂2019| 日本高清免费一本视频在线观看| 白丝一区| 啪一啪免费视频| 啊啊啊啊在线观看网址| ,成人免费啪啪视频| 男人的天堂欧美| 2019亚洲男人天堂| 精品人妻一区二区三区日产| 啊a一区在线| 一区AV| 亚洲精品蜜桃久久久久久久| 日韩精品永久在线观看| 国产97视频| 99综合自拍| 亚欧性爱在线无码| 香蕉综合网| 久久黄色网址| 99色色网| 91丝袜在线播放| 嗯嗯啊啊好大好爽| 国产AV毛片| 欧美亚洲| 欧美96交| 爱爱久久| 国产超碰人人操| 91九九| 97在线青| 精品无吗久久| 香蕉在线一区二区三区| 亚洲国产精品有声| 97精品免费视频网站| 欧美天堂日韩三级国产传媒| 成年女人18级毛片毛片免费观看| 五月丁香综合啪啪| 国产精品日日摸夜夜添骚逼| 色五月激情AV在线| 欧美成人亚洲精品| 九九香蕉网| 日韩av在线免费网站| 久草精品国产99| 青青草国产欧美非洲黑人| 一二三四区电影| 97久久国产精品| 欧美熟女丝袜| www.AV有限公司一区| 亚洲情色1区| 九色 人妻 大香蕉| 婷婷五月天激情网| 欧美一级做a爰片免费视频| 国产成人免费观看在线视频| 久久受www免费人成| 亚洲熟伦熟妇AV无码春色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲少妇诱惑| 国产精品经典一卡久久久| 国产天美欧美| 大香蕉伊人一区在线观看| 亚洲有薄码区日本系列中文字幕| 色97| 日韩在线AB| 色 婷97| 欧美日韩天堂| 欧美日韩亚洲国产中文永久天天看 | 亚洲第一无码播放立川理惠| www.99中文字幕| 国产人妻天天干精品| 欧美疯狂做爰xxxx| 69人妻精品一区二区绯色| 日本美女性生活久久久久久久| 嗯嗯啊啊操死我| 99亚洲人人| 欧美 日韩第一性色| 大香蕉日韩| 国产精品内射婷婷一级二| 久久久久久电影| 天天看,天天做| 夜夜一区二区| 欧日韩在线观看| 正宗无毛一线天嫩逼| 中文字幕欧美日韩三级| 丁香九月 婷婷| 岛国精品视频在线观看| 国产不卡片| 欧美中字不卡| 3PAV乱伦视频| 秋霞一级视频在线观看免费| 又黄又爽在线观看视频| 亚洲性图91| 无码人妻一区二区三区免费九色| 手机在线A片| 啊啊啊啊啊啊在线看| 国产免费一区| 日本视频在线中文字幕| 国产成人www免费人成看片| 麻豆国产96在线| 中文久久一区| 亚洲 欧美 第一页| 奇米狠999| 色老汉色| 白丝AV| 欧亚乱色熟女一区二区| 久久久国产三级黄色片| 九九拍拍精品视频在线播放 | 亚洲资源吧| 男人天堂新| 久久久亚洲| 国产一区在线观看无码AV| 亚洲人人操| 97超碰欧美手机在线| 最新av网站在线观看| 啊…啊…操我用力操我| 玖玖爱伊人玖玖爱| 日韩美女啪啪一区| 国产大片精久久久久久| 欧美天天综合在线| 亞洲久久直播| 亚洲国产综合久久天堂| 人妻天堂网| 黄色小视频日本txt| 九九九久久久久| 伊人丁香五月婷婷| 懂色AV一区二区三区| 熟女91网站| 五月丁香成人网| 婷婷国产精品一区二区| 人妻人人操| 国产熟女无套内射| 美女诱惑爱爱| 韩国一级做a久久久久| 校园春色之综合网| 97欧美视频| 91丝袜美女| 欧美熟妇成人一区二区| 1二区9| 久久久久免费看少妇A片特黄| 伊人国产视频| 99亚洲国产精品色一区二区三区| 97精品国产97久久久久久免费| 久九色| 色香阁在线| 国产乱伦视频污| 男人的天堂2000| 中文字幕性感少妇av| 日本不卡在线二区三区| 91色女| 丝袜剧情| 欧美综合狠| baisiav| 亚洲欧洲精品视频发布| 日韩本不卡视频在线观看| 丝袜夫妻自拍| 一区二区三区黄片免费观看| 超碰色大香蕉| 日韩三级在线观看mp4| 亚洲中文日韩欧美大香蕉视频| 国产AV线| 一区久久久二区| 日韩丝袜二区| 中国一级αV| 97视频在线观看网站| 5278欧美一区二区三区| 午夜性生活av免费在线看| 日夜干射色啊| 一级啊性爱在线视频| 久久97超碰| WWW美腿丝袜香蕉中文| 日韩紧密久久| 色小视频蜜乳| 国产一区免费午夜视频| 97久久久久| 91超碰在线播放| 亚洲,欧美,春色,另类| 欧美一级久久久久久久大片动画| 91n欧美| 日韩二区三四区五区六区在线看| 青青操97| 久久久五月天| 亚洲乱码国产乱码精网站| 无码天堂| 欧美啪啪色吧在线| 久操视频免费观看| 色九九九| 欧美精品四区| 日本综合色图| 天天日天天干天天整| 中文字幕奈奈美被公侵犯| 精品91| 久久男人天堂| 快灬快灬 一下爽蜜桃在线观看| Julia Annxxxxx| 伦在线97| 少妇内射www在线观看视频| 九九无码久久精品视频| 91在线色综合| 麻豆天美国美国产| 99热亚洲| 日韩一级二级| 欧美毛片在线网| 25国产精品免费观看| 亚洲精品男人的天堂| 五月婷婷丁香| 色噜噜综合在线| 97综合在线观看| 日产国产精品中文久久婷婷| 午夜福利 成人 91| 日本九九久久99| 2026国产精品视频| 97精品网站| 亚洲999综合| 肉丝中文无码高清| 99久久99九九99九九九| sewuyueav| 人妻少妇久久中文字幕一区二区 麻豆 | 夜色91| 91免费看一区二区三区| 91视频精品| 激情黄色片在线观看| 亚洲国产av中文字幕久久| 韩国黄片aaaa| 久/久精品99看9| 欧美性色综合网| 欧美性爱第一页久久| 91欧美另类| 中出20p| 97精品久久| 日韩综合成人免费视频| 国产精品视频白浆免费| 人妻一区视频| 91丝袜美女国产| 久偷拍| 蜜臀久久99精品久久久久电影| 97色碰| 黄aaaaaaaaaaaaaaaaaa色网站| 立川理惠无码一区二区| 91啪9色| 夜夜爽夜夜高潮夜夜爽| 日韩欧美~中文字| 亚洲欧洲成人在线电影| 3P乱轮视频| 97最新在线播放视频| 亚州色图狠狠干| 九九操久久国产免费视频| 性暴力欧美猛交在线直播| 成人性爱电影一区二区| 91国产精品熟女| 人妻大香蕉| 免费一级性爱久久| 日韩美一区| 精产品久久| 操操逼操操逼操操逼逼| 久久久久久亚洲精品中文字幕人妻| 欧美国产视频| 亚洲不卡三级手机播放| 久草大| 偷拍亚洲视频一区二区三区四区| 中国农村熟妇毛片视频| 9久超碰| 偷拍盗拍亚洲色图图片| 欧美v亚洲v日韩v最新在线二区 | 丁香五月天堂网| 职场同事知名国产国产精品久久欧美日韩 | 色综合久久88色综合久久天天| 不卡九肏| 福利视频香蕉免费一区二区在线| 國產尤物AV尤物在線觀看 | 99少妇| 99热这里是精品| 成人一级二级| 欧美国产精品久久九九| 成人综合久久精品色婷婷| 久久久少妇诱惑精品视频| 亚欧视频在线| 91无码人妻| 99久久e免费热视| 999熟女精品| 国产亚洲精品美女久久久久久2021| 国产不卡中文字幕免费avi| 日韩精品午夜操呦呦不卡影院| 中日高清无码操逼视频| 老熟乱一区二区三区四区| 日本高清久久| 国产91 丝袜在线播放00-百度| 艹我哪美一区无码| 91一区二匹| 五月丁香婷婷综合| 91热热色| 67914亚洲精品| 欧美爱爱97| 强奸少妇AV导航网| 91啪啪| 男人的天堂日本东京热| 911粉嫩人妻| 久操视频免费观看| 日韩成人精品中文字幕| 精品人妻少妇| 97色伦欧美| 无码不卡亚洲成?人片| 日韩丝袜高跟制服在线观看| 熟女精品va中文字幕| 亚洲色婷婷综合久久久久中文| 亚洲影视综合网| 3P丝袜熟女 色综合| 五月天婷婷激情| 久久久97| 天天影视网色欲色香| 激情五月婷婷| 9丨亚洲一区二区在线| 精品国产乱码久久久久久久| 青青草吊丝| 日本性爰一道本| 国色综合天| 日日干男人的天堂| 六月婷婷五月丁香| 啪啪免费| 亚洲丝袜少妇在线| 中文久久96| 啊啊啊啊啊在线视频| www.久久| 亚洲图片另类| x97av| 亚洲蜜乳av| 天天综合,91入口| 99热综合| 亚洲欧美成人网站AAA| 日本熟女不卡视频| 日韩精品电影| 国产九月婷婷| 天天插夜夜操| 亚洲 无码 偷拍| 天天拍天| 人人摸人人干| 国产欧美一级在线观看| 青青青青青手机视频| 欧美激情亚洲情色| 欧州激情视频在线一区二区| 女人的久久久| 亚洲黑丝在线| 亚洲综合成人网| 操比国产| 人人操,操人人| 乱伦a片视频| 中国AV美女| 精品免费成人久久| 激情内射| 日韩专区久久久| 五月天AV资源| 午夜操一视频一区| 97超碰精品成| 亚洲综合小视频小说在线观看 | 国产免费一区在线观看| 国产在线观看91精品一区| 国产中出内射一区二区| 精品久久久久久久| chaopen97久久| 亚 欧 美 综合| 欧洲熟妇xxXx欧美老妇裸体| 国产美女销魂在线观看不卡| 神马九九| 骚熟女AV网| 青草园大香蕉| 美女爽爽爽刺痛洞洞| 性性久久| 亚洲另类色综合网站| 久久久久久无码人妻中文字幕| 91熟女视频网| 成人性交午夜免费片| 亚洲学生妹高清av| 九九精品99| 伦伦成年午夜免费视频| 婷婷久久大香蕉| 大香蕉碰碰| 色狠狠综合噜一二三区| 色麻豆AV| 亚洲熟女av中文字幕| 性色综合网| 国产精品第一区第一页| 亚洲成人福利电影免费| 国产精品亚洲免费| 免费的av网| www.acm成人黄色毛片| 91亚洲欧美激情| 岛国激情视频软件| 99久热| 中文字幕精品久久久久人妻红杏ⅰ| 后入福利| 另类亚洲一区二区三区| 岛国色情视频在线观看| 3P乱轮视频| 少妇超碰在线| 国产精品3| 中文字幕久久婷婷丁香五月天| 黄色网址在线免费观看| 综合色图,成人综合网| 久草综合视频| 婷婷丁香人妻 | 破苞ⅩXXX性无码动漫无码| 91亚洲不卡一区| 精品人妻一区二区蜜桃视频| 欧美的性爱网站免费| 2020中文字幕| 视频在线观看青青99国产| 亚洲高潮影院| 亚洲国产成人精品999| 免费人成?大片在线播放| 天天日日日射| 久久久久久久久久精| 国产男女边吃边摸视频网站| 中文字幕在线日亚洲9| 日日干夜夜欢| 国产一级内射无挡观看| 欧美久久毛片基地| 乱人乱色一区二区三区免费| 综合久久久久久久综合网| 东京成人一区| 国产精品美女| 青青国产精品在线| 东北女人无套内谢视频| 男人的天堂2019AV| 四虎精品永久在线观看| 国产一区二区欧美日本| 欧美综合自拍亚洲综合图| 男人的天堂 在线一区| 爽爽歪在线视频| 东京热91| 日韩三级视频一区二区三区| 日韩精品9区| 国产精品盗摄 偷窥盗摄| 无码直播久久久| 日韩精品99久久久久久中文字幕| 亚洲 小说 欧美 激情 另类| oumeisetupian| 国产精品毛片?v一区二区三区| 极品粉嫩一区二区| 亚洲精品国产精品成人| 少妇69中文| 精品人妻1区| 亚洲日本男人天堂网| 亚欧性爱无码| 毛片99-全集电影手机免费观看完整-B029AV | 玖玖爱综合| 亚洲欧美在线观看免费| 黑人精品欧美一区二区蜜桃| 免费一级特黄特色大片在线观看看| 一区二区三区四区姦女| 欧美专区日本专区| 天天影视激情欧美| 国产福利小视频高清在线观看| 91亚洲人| 青青草成人视频在线观看二区| 日韩亚洲欧美中文字幕| 伊人991| www.色婷婷.com| 欧美综合娱乐久久| 熟女少妇一区二区三区| 中文字幕在线观看网页| 亚洲欧洲国产综合av| 91美| 激情人妻另类| 日日夜夜骚|