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

ARTICLE DETAIL

資訊詳情

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

C++ graphics.h/graphics.lib 繪圖與雙緩沖實(shí)戰(zhàn)

C++ graphics.h/graphics.lib 繪圖與雙緩沖實(shí)戰(zhàn) 簡(jiǎn)介這份壓縮包面向?qū)W習(xí) C 圖形繪制的初學(xué)者、課程實(shí)驗(yàn)者以及需要補(bǔ)全 BGI 圖形庫(kù)環(huán)境的開(kāi)發(fā)者提供 graphics.h 頭文件與 graphics.lib 庫(kù)文件的配套組合用于解決編譯鏈接階段缺少圖形接口聲明和預(yù)編譯實(shí)現(xiàn)的問(wèn)題并適配常見(jiàn)的 Windows 編譯環(huán)境。包內(nèi)共 2 個(gè)文件分別為 1 個(gè) .h 頭文件和 1 個(gè) .lib 庫(kù)文件整體約 11KB體積輕量、類(lèi)型簡(jiǎn)潔便于直接放入項(xiàng)目目錄并按需配置包含路徑與鏈接依賴(lài)。已有 3591 人學(xué)習(xí)或下載說(shuō)明其在 C 圖形編程入門(mén)場(chǎng)景中具有一定參考價(jià)值。頭文件可用于了解窗口初始化、坐標(biāo)設(shè)置、基本圖形繪制、顏色管理、文本輸出及事件處理等接口聲明庫(kù)文件則承載對(duì)應(yīng)預(yù)編譯實(shí)現(xiàn)配合 initgraph、rectangle、line、outtextxy 等典型調(diào)用讀者可據(jù)此搭建簡(jiǎn)單的圖形窗口與繪圖示例理解圖形庫(kù)的鏈接方式、基礎(chǔ) API 使用思路以及圖形會(huì)話(huà)的初始化與關(guān)閉流程。1. 一個(gè) .rar 里的 graphics.lib把 C 畫(huà)圖從控制臺(tái)黑框拉到能看見(jiàn)的窗口第一次做 C 課程設(shè)計(jì)的人卡點(diǎn)往往不在算法而在屏幕上怎么出現(xiàn)一條線(xiàn)??刂婆_(tái)只能 printf 字符換到框架又要先配一整套工程兩周工期根本不夠折騰。這個(gè)下載包里最核心的就是兩樣?xùn)|西一個(gè)graphics.h頭文件和一個(gè)graphics.lib靜態(tài)庫(kù)接口是 BGI 風(fēng)格的老派圖形 API——initgraph開(kāi)窗口、line畫(huà)線(xiàn)、outtextxy寫(xiě)字、getmessage收鼠標(biāo)鍵盤(pán)事件一個(gè)main函數(shù)就能跑出帶界面的結(jié)果。它適合趕課設(shè)、做圖形學(xué)入門(mén)作業(yè)、寫(xiě)小型可視化 Demo 的人也適合想把繪制循環(huán)攥在自己手里、而不是被框架回調(diào)牽著走的熟手。下面按拆包、掛接、繪圖循環(huán)、交互、排錯(cuò)的順序把它拆成能照著復(fù)現(xiàn)的步驟。2. 拆包與掛接graphics.h 與 graphics.lib 在工程里怎么落地先把選型理由說(shuō)清楚不然后面每一步都會(huì)覺(jué)得別扭。這套東西本質(zhì)上是一個(gè)薄封裝它把 Windows 下的窗口創(chuàng)建、GDI 繪圖調(diào)用、消息循環(huán)壓縮成十幾個(gè)函數(shù)用一套過(guò)程式的 API 暴露出來(lái)。相比直接寫(xiě) Win32 SDK你省掉兩百行窗口過(guò)程代碼相比上 Qt 或其它框架你省掉編譯一整棵依賴(lài)樹(shù)的時(shí)間。代價(jià)是它的能力邊界很窄——沒(méi)有控件、沒(méi)有布局、沒(méi)有硬件加速畫(huà)幾千個(gè)圖元還行做動(dòng)畫(huà)粒子多了就會(huì)掉幀。判斷標(biāo)準(zhǔn)很簡(jiǎn)單你要的是屏幕上能畫(huà)、能點(diǎn)、能動(dòng)選它你要的是做一個(gè)正經(jīng)桌面軟件別選它。2.1 目錄怎么擺include 與 lib 分離我不喜歡把.h和.lib跟源碼混在一個(gè)目錄里工程大了以后自己都分不清哪個(gè)頭文件是第三方帶進(jìn)來(lái)的。常見(jiàn)做法是按下圖這種三層結(jié)構(gòu)擺放源碼、頭文件、庫(kù)文件各歸各位project/ ├── include/ │ └── graphics.h # 第三方頭文件只讀不放源碼 ├── lib/ │ └── graphics.lib # 靜態(tài)庫(kù)或?qū)霂?kù) ├── src/ │ └── main.cpp └── CMakeLists.txt這樣擺的好處是編譯器的-I和鏈接器的-L各指一個(gè)目錄換機(jī)器或者打包給別人時(shí)路徑規(guī)則不用改。參數(shù)說(shuō)明include/對(duì)應(yīng)編譯器頭文件搜索路徑lib/對(duì)應(yīng)鏈接器庫(kù)搜索路徑兩者不能混用——把頭文件丟進(jìn)lib/目錄編譯器不會(huì)去那里找.h報(bào)的錯(cuò)是fatal error: graphics.h: No such file or directory很多人第一反應(yīng)是庫(kù)壞了其實(shí)只是路徑?jīng)]指對(duì)。還有一件事必須先確認(rèn)這個(gè).lib到底是靜態(tài)庫(kù)還是導(dǎo)入庫(kù)。判斷方法很笨但有效——如果壓縮包里除了.lib還有一個(gè)同名的.dll那.lib多半是導(dǎo)入庫(kù)程序運(yùn)行時(shí)必須把.dll拷到.exe同目錄如果只有.lib那就是靜態(tài)庫(kù)鏈接進(jìn)去就完事產(chǎn)物是單個(gè)可執(zhí)行文件拷走就能跑。這一步?jīng)]搞清后面會(huì)出現(xiàn)我這邊能跑交上去老師那邊雙擊沒(méi)反應(yīng)的經(jīng)典事故。提示靜態(tài)庫(kù)和導(dǎo)入庫(kù)的鏈接參數(shù)完全一樣區(qū)別只在運(yùn)行期。交付前把.exe單獨(dú)拷到一個(gè)空目錄雙擊一次能起來(lái)才算真的沒(méi)問(wèn)題。2.2 命令行鏈接g 與 MSVC 兩套寫(xiě)法先用命令行編譯一次比直接開(kāi) IDE 更能看清到底鏈接了什么。g 這一套MinGW-w64 環(huán)境大致是這樣g src/main.cpp -o demo.exe \ -I./include \ -L./lib \ -lgraphics -lgdi32 -luser32 -limm32 \ -stdc17 -municode逐項(xiàng)說(shuō)明-I./include告訴編譯器去哪找graphics.h-L./lib告訴鏈接器去哪找graphics.lib-lgraphics是庫(kù)名注意 g 的規(guī)則是-l后面跟去掉lib前綴和.lib/.a后綴的名字所以graphics.lib對(duì)應(yīng)-lgraphics寫(xiě)成-lgraphics.lib會(huì)直接報(bào)找不到。-lgdi32 -luser32 -limm32是這套圖形接口在底層依賴(lài)的系統(tǒng)庫(kù)GDI 負(fù)責(zé)實(shí)際繪制user32 負(fù)責(zé)窗口和消息imm32 負(fù)責(zé)輸入法消息。漏掉其中任何一個(gè)報(bào)錯(cuò)都是未定義引用且錯(cuò)誤信息里出現(xiàn)的函數(shù)名你根本沒(méi)在自己代碼里寫(xiě)過(guò)——這是最容易被誤判成庫(kù)版本不對(duì)的一類(lèi)問(wèn)題。-municode只在頭文件聲明的是寬字符版入口時(shí)加加了還報(bào)undefined reference to WinMain就把這個(gè)參數(shù)去掉再試。MSVC 的cl寫(xiě)法邏輯一樣語(yǔ)法不同cl /EHsc /std:c17 /I include src\main.cpp ^ /link /LIBPATH:lib graphics.lib gdi32.lib user32.lib imm32.lib注意/I和/link的分界/I屬于編譯器選項(xiàng)/link之后全部交給鏈接器/LIBPATH:是鏈接器的庫(kù)搜索路徑。把graphics.lib寫(xiě)在/link前面cl會(huì)把它當(dāng)源文件處理報(bào)cannot open input file。這個(gè)坑我在第一次配環(huán)境時(shí)踩過(guò)排查了半小時(shí)才發(fā)現(xiàn)是參數(shù)位置問(wèn)題。2.3 CMake 工程化把鏈接參數(shù)寫(xiě)進(jìn) CMakeLists命令行能跑通之后建議立刻轉(zhuǎn)成 CMake不然每換一臺(tái)機(jī)器就要重敲一遍參數(shù)出錯(cuò)概率極高。一份最小可用的CMakeLists.txtcmake_minimum_required(VERSION 3.16) project(gfx_demo CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 頭文件目錄只影響編譯階段 include_directories(${CMAKE_SOURCE_DIR}/include) # 庫(kù)目錄只影響鏈接階段 link_directories(${CMAKE_SOURCE_DIR}/lib) add_executable(gfx_demo src/main.cpp) # 私有鏈接graphics 是主庫(kù)后面三個(gè)是它依賴(lài)的系統(tǒng)庫(kù) target_link_libraries(gfx_demo PRIVATE graphics gdi32 user32 imm32)邏輯說(shuō)明include_directories和link_directories是全局作用域的老寫(xiě)法小工程夠用工程再大一點(diǎn)應(yīng)該換成target_include_directories和target_link_libraries里的完整路徑避免污染其它 target。PRIVATE的意思是這個(gè)依賴(lài)不向使用gfx_demo的下游目標(biāo)傳遞對(duì)可執(zhí)行文件來(lái)說(shuō)永遠(yuǎn)該用PRIVATE。一個(gè)容易忽略的點(diǎn)link_directories在 CMake 里必須在add_executable之前調(diào)用才生效而且不同生成器Ninja 與 Visual Studio 生成器對(duì)它的處理略有差異。如果 CMake 配置成功了但鏈接還是找不到庫(kù)直接把.lib的絕對(duì)路徑寫(xiě)進(jìn)target_link_libraries最穩(wěn)target_link_libraries(gfx_demo PRIVATE ${CMAKE_SOURCE_DIR}/lib/graphics.lib gdi32 user32 imm32)絕對(duì)路徑寫(xiě)法犧牲了一點(diǎn)可移植性但換來(lái)的是排錯(cuò)時(shí)不用懷疑是不是路徑又沒(méi)生效。在把工程交給別人之前我一般先保證它能跑再考慮優(yōu)雅。3. 從 initgraph 到 FlushBatchDraw一個(gè)不閃爍的繪制循環(huán)掛接成功只是第一步真正決定體驗(yàn)的是繪制循環(huán)怎么組織。這一章按開(kāi)窗口 → 畫(huà)東西 → 刷新 → 收尾的順序走一遍每一步都給出可跑的代碼和參數(shù)含義。3.1 initgraph 的三個(gè)參數(shù)與窗口坐標(biāo)系#include graphics.h int main() { // 640x480 的窗口第三個(gè)參數(shù)是擴(kuò)展標(biāo)志位一般傳 0 或直接省略 initgraph(640, 480, 0); setbkcolor(WHITE); // 設(shè)置背景色注意不會(huì)立即生效 cleardevice(); // 用當(dāng)前背景色清屏這一步才真正刷上去 setlinecolor(BLACK); line(0, 0, 639, 479); // 從左上角畫(huà)到右下角 getchar(); // 停住窗口等待一次輸入 closegraph(); // 釋放資源、關(guān)閉窗口 return 0; }參數(shù)說(shuō)明initgraph(width, height, flag)的前兩個(gè)參數(shù)是客戶(hù)區(qū)寬高不含標(biāo)題欄和邊框所以傳 640×480 得到的窗口在屏幕上會(huì)比 640×480 略大。第三個(gè)參數(shù)在不同分支里含義不一致有的版本用作樣式標(biāo)志有的版本干脆重載成兩參數(shù)版本——最可靠的做法是打開(kāi)graphics.h看函數(shù)聲明別照著網(wǎng)上抄。setbkcolor只改內(nèi)部狀態(tài)必須跟一次cleardevice()才能看到效果這是新手最容易困惑的一處明明設(shè)了背景色窗口還是黑的。坐標(biāo)系默認(rèn)原點(diǎn)在左上角x 向右遞增y 向下遞增這跟數(shù)學(xué)課本的直角坐標(biāo)系是反的。如果做函數(shù)圖像、物理軌跡這類(lèi)東西setorigin(x, y)可以把原點(diǎn)挪到窗口中心之后畫(huà)的就是標(biāo)準(zhǔn)笛卡爾坐標(biāo)setorigin(320, 240); // 原點(diǎn)移到窗口中心 setaspectratio(1, -1); // y 軸翻轉(zhuǎn)向上為正 line(-100, 0, 100, 0); // 現(xiàn)在畫(huà)出來(lái)是一條水平線(xiàn)y0 在窗口正中setaspectratio(1, -1)里的-1是把 y 軸方向鏡像過(guò)來(lái)。這兩個(gè)函數(shù)必須成對(duì)使用只調(diào)setorigin不調(diào)setaspectratio圖像會(huì)整體上下顛倒畫(huà)正弦曲線(xiàn)得到的是反的排查起來(lái)很費(fèi)時(shí)間。3.2 顏色、線(xiàn)型與基本圖元顏色用RGB(r, g, b)宏自己算也可以用預(yù)定義常量。線(xiàn)型通過(guò)setlinestyle控制填充靠setfillcolor配fill*系列函數(shù)setlinecolor(RGB(0, 120, 215)); setlinestyle(PS_SOLID, 2); // 實(shí)線(xiàn)線(xiàn)寬 2 像素 rectangle(50, 50, 250, 200); // 只描邊不填充 setfillcolor(RGB(255, 200, 0)); fillcircle(400, 150, 60); // 有邊框有填充的圓 solidcircle(400, 300, 40); // 只有填充無(wú)邊框 // 多邊形先給點(diǎn)數(shù)組再一次性畫(huà) POINT pts[3] { {100, 400}, {200, 300}, {300, 400} }; setfillcolor(RGB(120, 200, 120)); fillpolygon(pts, 3);參數(shù)說(shuō)明setlinestyle(style, thickness)第一個(gè)參數(shù)是線(xiàn)型枚舉PS_SOLID實(shí)線(xiàn)、PS_DASH虛線(xiàn)、PS_DOT點(diǎn)線(xiàn)第二個(gè)參數(shù)是線(xiàn)寬單位像素但虛線(xiàn)類(lèi)線(xiàn)型在多數(shù)實(shí)現(xiàn)里線(xiàn)寬只能是 1傳 2 會(huì)靜默退化成實(shí)線(xiàn)——這個(gè)行為沒(méi)有報(bào)錯(cuò)只能靠肉眼發(fā)現(xiàn)。fillpolygon(POINT*, int)第二個(gè)參數(shù)是頂點(diǎn)個(gè)數(shù)數(shù)組必須至少這么多元素越界不會(huì)崩但會(huì)畫(huà)出詭異的形狀。rectangle和fillrectangle的區(qū)別值得單獨(dú)記一句前者只描邊后者只填充想要填充加描邊必須兩個(gè)都調(diào)順序是先f(wàn)illrectangle再rectangle反過(guò)來(lái)邊框會(huì)被填充色蓋住一半。這個(gè)細(xì)節(jié)在畫(huà)柱狀圖、按鈕這類(lèi)元素時(shí)天天用到。3.3 雙緩沖BeginBatchDraw 三件套的調(diào)用時(shí)機(jī)直接在循環(huán)里cleardevice()再逐個(gè)畫(huà)圖元畫(huà)面一定閃。原因是每次繪圖調(diào)用都直接寫(xiě)到了窗口表面清屏和重繪之間存在一個(gè)肉眼可見(jiàn)的時(shí)間窗。解決辦法是批量繪制initgraph(800, 600); BeginBatchDraw(); // 開(kāi)啟批量模式之后的繪制先寫(xiě)進(jìn)內(nèi)存緩沖 int x 0; while (x 800) { cleardevice(); // 清的是后臺(tái)緩沖用戶(hù)看不見(jiàn) setfillcolor(RGB(220, 60, 60)); solidcircle(x, 300, 30); FlushBatchDraw(); // 把整幀一次性貼到窗口上 x 4; Sleep(16); // 約 60 幀/秒 } EndBatchDraw(); // 必須調(diào)用否則緩沖資源不釋放 closegraph();邏輯說(shuō)明BeginBatchDraw()之后所有繪制都落在離屏緩沖上FlushBatchDraw()是唯一把緩沖內(nèi)容提交到屏幕的動(dòng)作EndBatchDraw()收尾并釋放緩沖。三者必須成對(duì)只寫(xiě)前兩個(gè)不寫(xiě)最后一個(gè)程序退出時(shí)會(huì)殘留資源FlushBatchDraw放在循環(huán)里一幀只調(diào)一次調(diào)多次等于白開(kāi)雙緩沖。一個(gè)血淚經(jīng)驗(yàn)FlushBatchDraw之后再調(diào)用cleardevice清的是已經(jīng)提交的畫(huà)面會(huì)造成單幀閃爍正確順序永遠(yuǎn)是清屏 → 畫(huà)完全部元素 → 提交。如果畫(huà)面里有一部分靜態(tài)內(nèi)容比如坐標(biāo)軸、標(biāo)題欄不想每幀重畫(huà)可以只清動(dòng)態(tài)區(qū)域用setfillcolor配solidrectangle覆蓋舊位置比整體清屏快得多。3.4 關(guān)閉窗口與資源回收closegraph()負(fù)責(zé)銷(xiāo)毀窗口、釋放 GDI 對(duì)象、恢復(fù)正??刂婆_(tái)。放在main的 return 之前或者放在每個(gè)提前退出的分支里。如果程序里有return直接從循環(huán)中跳出而沒(méi)走closegraph窗口會(huì)殘留到進(jìn)程結(jié)束調(diào)試時(shí)看到關(guān)不掉的黑窗口多半就是這個(gè)原因。穩(wěn)妥的寫(xiě)法是把繪圖主體放進(jìn)一個(gè)函數(shù)initgraph和closegraph成對(duì)出現(xiàn)在同一個(gè)作用域內(nèi)void run() { initgraph(800, 600); // ... 全部繪制邏輯 ... closegraph(); } int main() { run(); return 0; }這樣即便中間拋異常?;赝藭r(shí)也至少保證run里的局部對(duì)象被析構(gòu)。嚴(yán)格來(lái)說(shuō)closegraph不會(huì)因?yàn)楫惓W詣?dòng)執(zhí)行需要 RAII 包裝才能做到萬(wàn)無(wú)一失但對(duì)課程設(shè)計(jì)這個(gè)量級(jí)成對(duì)寫(xiě)在一個(gè)函數(shù)里已經(jīng)能擋住九成問(wèn)題。4. 交互接進(jìn)來(lái)鼠標(biāo)鍵盤(pán)消息、文字渲染與幀率控制畫(huà)面動(dòng)起來(lái)之后下一步是能響應(yīng)操作。這一章講三個(gè)東西怎么取消息、怎么寫(xiě)中文、怎么控制節(jié)奏。三者疊在一起才是一個(gè)能演示的程序。4.1 getmessage 與 peekmessage 的區(qū)別這類(lèi)圖形庫(kù)提供兩套取消息的方式行為完全不同選錯(cuò)了程序要么卡死要么狂占 CPU。ExMessage msg; // 阻塞式?jīng)]有消息就停在這里等適合等用戶(hù)點(diǎn)一下再繼續(xù)的場(chǎng)景 while (getmessage(msg)) { if (msg.message WM_LBUTTONDOWN) { // msg.x / msg.y 是相對(duì)窗口客戶(hù)區(qū)的坐標(biāo) setfillcolor(RGB(0, 160, 220)); solidcircle(msg.x, msg.y, 20); FlushBatchDraw(); } if (msg.message WM_KEYDOWN msg.vkcode VK_ESCAPE) break; // ESC 退出 }getmessage在無(wú)消息時(shí)會(huì)阻塞所以它可以直接當(dāng)主循環(huán)用——程序閑下來(lái)就停在那里CPU 占用接近零。代價(jià)是動(dòng)畫(huà)沒(méi)法做因?yàn)橐坏┻M(jìn)到這個(gè)函數(shù)就不返回除非有輸入。需要邊動(dòng)畫(huà)邊響應(yīng)就得換成非阻塞的int x 0; BeginBatchDraw(); while (true) { // 先把消息隊(duì)列抽干一條不留 while (peekmessage(msg)) { if (msg.message WM_KEYDOWN msg.vkcode VK_ESCAPE) goto done; if (msg.message WM_LBUTTONDOWN) x msg.x; // 點(diǎn)哪兒球就跳到哪兒 } cleardevice(); setfillcolor(RGB(220, 60, 60)); solidcircle(x, 300, 30); FlushBatchDraw(); x (x 3) % 800; Sleep(16); } done: EndBatchDraw(); closegraph();參數(shù)說(shuō)明peekmessage(msg)取一條消息就返回隊(duì)列空時(shí)返回 false不阻塞getmessage(msg)隊(duì)列空時(shí)掛起等待。兩個(gè)函數(shù)都可以帶第二個(gè)參數(shù)做消息過(guò)濾比如只取鼠標(biāo)消息傳EX_MOUSE只取鍵盤(pán)傳EX_KEY過(guò)濾能減少無(wú)謂的判斷。注意peekmessage的 while 循環(huán)必須放在每幀開(kāi)頭并且抽干如果只取一條就開(kāi)始畫(huà)消息會(huì)積壓表現(xiàn)為點(diǎn)了很多下只有第一下生效。ExMessage結(jié)構(gòu)里的字段要看頭文件確認(rèn)常用的是message消息類(lèi)型、xy鼠標(biāo)坐標(biāo)、lbuttonrbutton按鍵狀態(tài)、vkcode虛擬鍵碼、wheel滾輪增量。4.2 文字輸出字體、對(duì)齊與中文亂碼寫(xiě)字用outtextxy但字體、大小、顏色都要提前設(shè)settextcolor(RGB(30, 30, 30)); setbkmode(TRANSPARENT); // 背景透明否則文字帶一塊底色 settextstyle(24, 0, L微軟雅黑); // 高度 24寬度自適應(yīng) outtextxy(20, 20, L幀率: 60 FPS); outtextxy(20, 60, L點(diǎn)擊畫(huà)布放置圓點(diǎn));參數(shù)說(shuō)明settextstyle(height, width, face)的height是字符高度像素width傳 0 表示按字體比例自適應(yīng)傳具體值會(huì)強(qiáng)制拉伸字形導(dǎo)致變形一般不要傳。第三個(gè)參數(shù)是字體名必須是寬字符串寫(xiě)成微軟雅黑在某些配置下會(huì)編譯失敗。setbkmode(TRANSPARENT)這一行幾乎不能省默認(rèn)是不透明模式文字背后會(huì)帶一塊背景色方塊疊在圖形上非常難看。中文亂碼是這一類(lèi)項(xiàng)目的高頻故障根源是字符集。源文件存成 UTF-8編譯器按 GBK 解析L中文就變成一堆問(wèn)號(hào)。處理辦法有兩條要么統(tǒng)一源文件編碼和編譯器編碼MSVC 加/utf-8g 加-finput-charsetUTF-8 -fexec-charsetUTF-8要么干脆把界面文字換成英文。趕工期的時(shí)候第二條路的性?xún)r(jià)比往往更高。4.3 幀率Sleep 掐時(shí)間還是固定步長(zhǎng)上一節(jié)的Sleep(16)是最樸素的限幀手段它的問(wèn)題是精度差——Windows 下Sleep的實(shí)際休眠時(shí)間通常比請(qǐng)求值多 1 到 15 毫秒取決于系統(tǒng)計(jì)時(shí)器分辨率。跑到 60 幀勉強(qiáng)夠想要穩(wěn)定 30 幀以上又不想畫(huà)面抖動(dòng)得自己算時(shí)間差#include chrono using namespace std::chrono; auto last steady_clock::now(); double acc 0.0; while (true) { auto now steady_clock::now(); double dt durationdouble(now - last).count(); last now; acc dt; // 邏輯更新用真實(shí)時(shí)間差不受幀率波動(dòng)影響 // 這里省略具體更新重點(diǎn)是 dt 這個(gè)量 cleardevice(); // ... 繪制 ... FlushBatchDraw(); // 目標(biāo) 16.6ms 一幀超了就補(bǔ)沒(méi)超就等 auto cost durationdouble(steady_clock::now() - now).count(); if (cost 0.0166) Sleep(static_castDWORD((0.0166 - cost) * 1000)); }邏輯說(shuō)明用steady_clock而不是system_clock因?yàn)楹笳邥?huì)被系統(tǒng)時(shí)間調(diào)整影響做動(dòng)畫(huà)計(jì)時(shí)時(shí)必須單調(diào)遞增。dt是上一幀到這一幀的真實(shí)秒數(shù)所有跟時(shí)間相關(guān)的量位移、旋轉(zhuǎn)角度都乘以它這樣幀率掉下去動(dòng)畫(huà)速度也不會(huì)變——這就是所謂幀率無(wú)關(guān)。很多課設(shè)里小球在別人電腦上跑得飛快、在自己電腦上慢吞吞就是位移寫(xiě)成了每幀固定值。注意Sleep(0)不等于不睡它會(huì)讓出當(dāng)前時(shí)間片在緊循環(huán)里反而可能比Sleep(1)更耗 CPU。真正想跑滿(mǎn)幀就別睡靠垂直同步或者手動(dòng)判斷時(shí)間差。5. 鏈接與運(yùn)行排查五條最常見(jiàn)翻車(chē)記錄這一章全是現(xiàn)象描述按看到什么 → 為什么 → 怎么辦寫(xiě)。這些坑我在不同機(jī)器、不同編譯器上反復(fù)遇到過(guò)順序基本按出現(xiàn)頻率排。5.1 現(xiàn)象滿(mǎn)屏未解析的外部符號(hào)函數(shù)名自己沒(méi)寫(xiě)過(guò)原因鏈接器只拿到了graphics.lib沒(méi)拿到它依賴(lài)的系統(tǒng)庫(kù)。圖形接口內(nèi)部調(diào)用了 GDI、user32 的函數(shù)這些函數(shù)在系統(tǒng)庫(kù)的導(dǎo)入庫(kù)里不顯式鏈接就找不到。解決按報(bào)錯(cuò)信息里的函數(shù)名前綴判斷缺哪個(gè)庫(kù)——帶Gdi、CreatePen、BitBlt的補(bǔ)gdi32帶CreateWindow、GetMessage、RegisterClass的補(bǔ)user32帶Imm的補(bǔ)imm32。CMake 里就是target_link_libraries那一行加上去命令行就是-lgdi32 -luser32 -limm32。還有一種情況是所有函數(shù)都報(bào)未解析那說(shuō)明.lib根本沒(méi)被鏈接上檢查-L路徑和庫(kù)名拼寫(xiě)。5.2 現(xiàn)象雙擊 exe窗口一閃就沒(méi)了原因main執(zhí)行完直接返回了initgraph之后的繪制還沒(méi)來(lái)得及顯示進(jìn)程就退出了?;蛘吒[蔽的一種——.lib是導(dǎo)入庫(kù)運(yùn)行時(shí)找不到配套的.dll加載階段就失敗窗口創(chuàng)建都來(lái)不及。解決先確認(rèn)代碼里有沒(méi)有讓程序停住的東西最土但有效的辦法是在closegraph()前加一句getchar()或者在主循環(huán)里加一個(gè)等待 ESC 的分支。排除代碼原因后把.dll拷到.exe同目錄再試。判斷是不是 DLL 缺失可以打開(kāi)命令行在 exe 目錄下運(yùn)行一次缺失時(shí)系統(tǒng)會(huì)彈一個(gè)明確的錯(cuò)誤框。5.3 現(xiàn)象畫(huà)面劇烈閃爍尤其是有大量圖元的時(shí)候原因沒(méi)有開(kāi)雙緩沖或者開(kāi)了但調(diào)用順序錯(cuò)了。還有一種情況是每幀都在setbkcolor之后再cleardevice等于每幀多刷一次全屏。解決確認(rèn)BeginBatchDraw在循環(huán)外調(diào)一次FlushBatchDraw在循環(huán)內(nèi)調(diào)一次EndBatchDraw在退出前調(diào)一次。再檢查清屏和繪制的順序必須是清 → 畫(huà) → 提交。如果圖元數(shù)量上千光靠雙緩沖也不夠得減少每幀重繪面積把靜態(tài)部分畫(huà)到一張內(nèi)存圖像上反復(fù)貼。5.4 現(xiàn)象中文顯示成亂碼、問(wèn)號(hào)或者方框原因三種可能一是源文件編碼和編譯器輸入編碼不一致二是用了窄字符版本的輸出函數(shù)卻傳了中文三是字體名指定的字體系統(tǒng)里沒(méi)有回退到默認(rèn)字體后中文缺字形。解決先統(tǒng)一編碼源文件保存為 UTF-8編譯加/utf-8或-finput-charsetUTF-8再確認(rèn)outtextxy的字符串是L...寬字符形式最后換一個(gè)確定存在的中文字體或者干脆先用英文把功能跑通再回頭處理字體問(wèn)題。方框和問(wèn)號(hào)要區(qū)分開(kāi)——問(wèn)號(hào)是編碼問(wèn)題方框是字體缺字形兩種故障的修法完全不同。5.5 現(xiàn)象32 位配置能編過(guò)切到 64 位鏈接失敗原因.lib是 32 位的跟 64 位的編譯目標(biāo)架構(gòu)不匹配。靜態(tài)庫(kù)對(duì)架構(gòu)敏感位數(shù)不一致時(shí)鏈接器會(huì)直接報(bào)模塊計(jì)算機(jī)類(lèi)型不匹配。解決把工程配置切回 x8632 位再編。如果非要 64 位就得找對(duì)應(yīng)架構(gòu)的庫(kù)文件沒(méi)有的話(huà)只能改配置——在項(xiàng)目設(shè)置里把目標(biāo)平臺(tái)改成 Win32CMake 里就是cmake -A Win32 ..。這個(gè)錯(cuò)在換電腦、換 IDE 默認(rèn)配置時(shí)特別容易出現(xiàn)因?yàn)楹芏嗄0迥J(rèn)建的是 64 位工程。提示排錯(cuò)時(shí)先看報(bào)錯(cuò)發(fā)生在哪個(gè)階段。編譯階段報(bào)錯(cuò)是頭文件和語(yǔ)法問(wèn)題鏈接階段報(bào)錯(cuò)是庫(kù)和架構(gòu)問(wèn)題運(yùn)行階段崩潰是資源和邏輯問(wèn)題。三個(gè)階段混在一起猜效率會(huì)低很多。6. 驗(yàn)收一個(gè)繪圖 Demo三條線(xiàn)跑通再交付寫(xiě)完代碼不等于能交。我習(xí)慣用一個(gè)最小驗(yàn)收清單過(guò)一遍三條線(xiàn)繪制、交互、幀率每條都有可觀察的判據(jù)不靠感覺(jué)。檢查項(xiàng)判據(jù)不合格的典型表現(xiàn)繪制完整性靜態(tài)元素每幀都在正確位置無(wú)殘留拖影、舊圖元沒(méi)被覆蓋雙緩沖生效快速移動(dòng)的物體邊緣干凈邊緣有鋸齒狀撕裂交互響應(yīng)連續(xù)點(diǎn)擊十次十次都有反應(yīng)只響應(yīng)第一次退出路徑ESC、點(diǎn)關(guān)閉按鈕、AltF4 都能正常退進(jìn)程殘留、黑窗口關(guān)不掉獨(dú)立運(yùn)行exe 拷到空目錄雙擊能起換機(jī)器就報(bào)缺文件中文顯示標(biāo)題、按鈕文字無(wú)問(wèn)號(hào)無(wú)方框全是???驗(yàn)收里最容易被跳過(guò)的是獨(dú)立運(yùn)行這一條。在自己機(jī)器上一切正常是因?yàn)殚_(kāi)發(fā)環(huán)境的 PATH 里恰好有需要的 DLL而別人機(jī)器上沒(méi)有。我的做法是每次改完代碼先把build目錄里的 exe 單獨(dú)拷到桌面一個(gè)空文件夾雙擊跑一遍能起來(lái)再繼續(xù)。這一步花不了一分鐘但攔下過(guò)好幾次交付前才發(fā)現(xiàn)的問(wèn)題。再往上一層如果你的 Demo 要交給別人繼續(xù)改建議把窗口尺寸、顏色、幀間隔這些數(shù)字全部提到文件頭部做成常量別散落在代碼中間const int WIN_W 800; const int WIN_H 600; const int FRAME_MS 16; // 目標(biāo)幀間隔 const COLORREF BG RGB(245, 245, 245); const COLORREF FG RGB(220, 60, 60);這樣別人調(diào)參不用滿(mǎn)文件搜索數(shù)字也避免改了一處漏了另一處。看起來(lái)是小事但一個(gè)散落著魔數(shù)的繪圖程序接手的人第一件事就是重寫(xiě)。最后說(shuō)一個(gè)我自己的習(xí)慣。凡是用這類(lèi)庫(kù)做的東西我一定會(huì)在main的第一行加一句日志輸出把窗口尺寸和庫(kù)的路徑打出來(lái)closegraph之前再打一句正常退出。聽(tīng)著很笨但程序閃退時(shí)這兩行輸出能立刻區(qū)分根本沒(méi)進(jìn)主流程和跑到一半崩了比開(kāi)調(diào)試器快。從那以后我每次配新環(huán)境都強(qiáng)制走一遍命令行編譯 → 空目錄雙擊 → 看兩行日志的流程沒(méi)再出現(xiàn)過(guò)交付當(dāng)天才發(fā)現(xiàn)鏈接不上這種事。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91伊人久久在线| 日韩免费在线观看不卡| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久久久亚洲熟妇熟女| 操逼片中文| 9999久久久久| 蜜乳av一区二区三区四区不卡| 天天日老熟妇| 97ai亚洲| 日韩操啪| 中文字幕日韩国产传媒欧美精品| 试看福利| 91操熟女| 日本免费不卡二区| 干少妇视频| 国产浮力影院第1页| 伊人久久国产免费观看视频| 亚洲?V高清一区二区三区尤物| 国产精品福利视频播放| 亚洲少妇色| 精品超碰色| 亚欧高清在线| 欧美成97爱| 插B在线观看| 91精产一区二区三区| 97在线观看免费视频| 能直接看AV的网站| 国产999精品久久久| 日韩激情中文字幕有码| 亚洲激情欧美色图| 久久一二三四五六七八九区区区 | 精品日韩人妻精品一二三区| 97爱爱爱综合| 亚欧毛片基地国产毛片基地| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 精品国产人成在线| 欧美大的香蕉有线电视视频| 色穴精品| 7月婷婷综合| 日韩欧美天堂| 久久人妻办公室视频| 美女好片色日本| 熟妇人妻一区二区三区| 久久五月婷| 亚洲国产丝袜熟女av| 熟女自慰久久久| 天天做日日做| 肏逼视频日本| 91精品国产91熟女| 插B在线观看| 伊人国产视频| 国产1727欧美| 丝袜亚洲91| 久久老子无码午夜伦不卡| 午夜视频久久久久一区| 东北女人高潮视频| 夜夜操美女| 人妻少妇久久中文| 亚洲毛片久久| 亚洲黄色电影| 伊人精品视频| 色五月天AV| 色色五月丁香| 乱伦Av网| 欧美日韩中文亚洲v在线综合| 乱性AV| 狠狠躁伊人中文字幕| 日本黄色裸日本黄色裸体| 黄片com.| 亚洲第一成人影院色播| 免费一级特黄特色大片在线观看看| 欧美精品一区二区少妇免费A片| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 伊人久久大香大香线蕉中文| 日本十八禁免费看污网站| 国模不卡| 最新中文字幕精品在线| 欧色网址| 国产乱码久久久| 婷婷亚洲综合| 精品网站99999| 狠狠超| 欧美高清在线| 9久精品| 99热只有这里有精品| 欧美日韩 强奸乱伦| 欧美色老汉| 一本色道人妻久久| 亚洲成人ab| 精品黄色电影| 在线可观看的黄色网址| 九色PORNY9l原创自拍| 九九人人操| 欧美精品四区| 亚州Av天美传媒| 美女诱惑一区| 午夜超爽| 99热伊人| 日本免费一区二区不卡| 欧美Aⅴ| 国产人人干| 久久9久久| 国产精品白丝www| 超碰91在线| 日韩精品国产一区二区| 啪啪91| 职场同事知名国产国产精品久久欧美日韩| 国产狂喷潮在线精品| 国产一区二区三三视频| 欧美精品成人亚洲| 国产成人久久精品蜜臀| 99久久网站| 亚洲欧洲无码97久久精品| 熟妇一区,二区,三区。| 性久久| 国产精品黑人一区二区三区| 久综合国内精品自在自线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 啪啪91| 国产1727欧美| 嫩呦国产一区二区三区AV| 日韩国语字幕| 久久色网| 69精品在线| 欧美在线啊啊| 亚洲有码 欧美精品| 91欧美综合| 一级婬片120分钟试看| AV麻豆免费一区| 亚洲日本韩国在线| 亚洲,欧美,综合网| 黄片免费久久久久久久| 亚洲情色综合网| 日本成人A片免费看| 蜜桃精久三区| 欧美日韩日产免费网站看| 97干com| 91欧洲国产成人久久精品网站| 五月天激情四射| 风韵犹存大大大大香蕉| 久久久九97| 日本欧美不卡| 日日嗨AV一区二区夜夜| 九九久久首页| 色综合久久88色综合久久天天| 久久激情五月| 东北女人性交| 五月天伊人| 欧美狠狠干| 精品久久99| 久久综合亚洲色1080p| 香蕉免费一区二区三区不读 | 久久久久亚洲| av日韩中文字幕| 日韩精品 资源| 精品一二三区久久AAA片| 欧美日韩久久精品爱爱| 久久男人| 日韩欧美~中文字| 大胆91| 99久久久久久亚洲精品不卡| 日本幼女18+| 日韩三级在线观看mp4| 久久99热这里只频精品6学生| 自拍鲍鱼一区在线高清观看免费| 高潮毛片无遮挡高清免费| 欧洲精品二区| 久操频道免费在线呗看| 亚洲激情欧美色图| 一本久久久精品| 欧美综合 站| 欧美国产一区二区三区麻豆传媒| 都市久久精品激情亚洲| 亚洲欧美天| 欧美 色 亚洲| 欧美经典一区二区三区| AV天堂电影网| 1000午夜黄色| 久久人妻无码毛片A片麻豆| 国产性刺激| 农村妇女一级二级三级视频| 免费看一级a性色生活片久久无| 国产精品国产自产高清AV| 高清无码在线播放网站| 国产精品久久久久久久AV大片| 97久久久久久久久久| 韩日精品福利视频一区不卡在线免| 久久久夜夜夜| 国产精品天美传媒| 久热大香蕉网站| 日本三级A片网站com| 色色操| 人妻酒店出差被中出免费在线播放| 九九九九精| 九九99久久| 天天躁狠狠躁av| a片偷拍视频| 国产久久一区二区午夜| 婷婷五月天激情四射| 大香蕉五月天| 天天操妹子| 色一情一乱一乱一区91Av| 劲爆欧美人妖三区91| 性色av大全| 黄色成品网站| 人人 操人人 操人人| 日韩天堂av电影在线观看| 神马久久午夜| 熟妇熟女亚洲天堂网| 亚洲另类天堂| 97人人爱人人做人人乐| 久久精品国产精品一区 | 日本高清一本二本免费不卡| AV网站高清无码在线观看| 日韩啪啪啪视频| 色色色欧美| 91伊人久久在线| 成人三一级一片aaa| 美女丝袜激情小说| 综合网色| 亚洲欧美综合| 校园春色综合色| AV天堂国产| 国产第11页| 玖玖玖玖精品国产剧情| 操东北女人| 97超碰逼| 在线啊v一区| 大香蕉懂9| 91欧美| 天天看天天日天天操| 精品国产网站| hd成人一区二区在线| 久久男人| 美女诱惑在线一区| 丁香五月天啪啪| 超碰午夜| 好涩综合| 欧美中字二区| 日韩性爱播放| 日韩啊V| 欧美天堂亚洲电影院一区在线播放| 啪一啪免费视频| 欧美激情精品久久久久久| 毛片中心9视频99| av绯色| 蜜桃臀av一区二区| 老女人碰碰在线碰碰视频| 国产精品视频白浆免费| 久久性爱视频免费看| 超碰98综合网| 青青操97| 黄片直播三级黄片两女一男| 国产福利精品98视频| 97在线青| 精品久一区免费| 美女国产一区二区久久| 91人妻少妇| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 欧美很很操视频| 99色热| 99热导航| 玖玖人人爱| 99热只有这里有精品| 99色网| 欧美高清16| 人妻免费观看| 欧美性后入| 夜夜操狠狠操| 国产黄色 A 片免费看| 香蕉欧美| 色臀AV| 蜜区区视频79| 亚州九九九精品视频| 日韩精品高清资源在线| 97午夜剧场日韩| 在线国产探花| 久久性爱网站| 青娱乐国产盛宴视频| 一区AV| 日韩精品-原创伙伴| 少妇内射视频| 亚洲色图欧美另类在线| 国产人伦精品一区二区三区| www.狠狠干.coom | 深夜激情无码| 久久久精品国产亚洲AV无码| 亚洲成a人片在线观看中文!!!| 小说区 图片区色 综合区| 老熟女综合网| 啊啊啊好大好深| 亚洲午夜精品久久久中文影院| 亚洲熟女一区| 久久久久78| 夜草欧美| 亚洲影视高清第一页| 天天摸天天舔天天操| 人人爱夜夜爱| 久久最新视频免费观看| 大香蕉琪琪日本女优不卡| juliaann丝袜大战黑鬼| 国产盗摄美女如厕大神作品在线观看| 精品福利视频| 久久99精品国产| 超碰在线人妻不卡| 国产成人精品午夜福利| 久久噜噜噜精品国产亚洲综合| 久久久久久少妇| 国产人妻精品一区二区三区秋霞 | av日韩中文字幕| 久久久久久99999国产精品| 国产熟码AV| 天天综合~91| 国产精品噜噜噜日日日| 操东北女人| 欧洲在线性爱视频| A 在线网址| 中文字幕精品一区二区精| 日本国产欧美高清在线| 99色在线观看| 中文字幕视频在线观看一区二区| 亚洲情色图片区| 久久大线蕉一区| 久操影视| 96精品久久| 26uuu久久| 日本人妻A片成人免费看片| 久久超碰av在线| 中文字幕乱偷人妻久久艾草网| 人妻超碰青青草98| 97在线免费视频观看| 亚洲国产精品无码AV久久| 嫩草在线视频| 成人短视频在线观看| 丝袜美腿诱惑亚洲欧美视频在线观看 | www…国产操逼| 欧洲熟妇xxXx欧美老妇裸体 | 日韩欧美中文| 日韩美一区| 怡红院成人av| 欧美瑟综合| 日本精品五区| 亚洲成人久久美女| 人人爱夜夜爱| 日韩一级二级三级| 操日韩第| 日本三级黄页| 亚洲电影91| 干B网| 久久久久久久伊人精品| 六月激情网| 久久爱超碰网| 97欧美在线| 亚洲成熟国产精品美女| 国产精品熟女AV中文字幕在线播放| 啊啊啊啊啊啊啊在线| 伊人91| 青娱乐国产精品| AV天天综合| nuu12国产麻豆精品| 1769成人国产精品视频| 曰本91情色| 中文字幕乱码在线| 亚州欧美色图| 欧美很很操视频| 中 文字幕一区二区三四 五 区日 日 骚| 熟女91网| 日日夜夜精品| 天天操天天射青青草| 久9爱精品| 日本免费人成视频播放120秒| 91色综| 欧美色图小说综合| 神马久久久久久伦理片| 人人综合| 亚洲天堂五月天国产| 丁香五月综合| 老熟女综合| 99久久久99久久91熟女| 久射吧| 久久精品国产亚洲AV无码做| 欧美A√综合网| 少妇熟女1区2区3区| 猛交交| 在线视频资源| 91久久99久久91熟女精品| 嗯嗯嗯啊啊啊干死我吧| 日欧亚洲二三区大片不卡| 男人的天堂欧美| 国产无码三级视频在线观看| 国产精品熟女AV中文字幕在线播放| 午夜精品久久久久久久久久久久久 | 日欧亚洲二三区大片不卡| 免费人人搞97| 日韩Va亚洲va欧美Ⅴa久久| 精品176精品2| 日韩av不卡在线看| 亚洲AV无码久久精品蜜桃小说| 久久精品国产亚洲AV先锋| 亚洲 欧美 91| 亚洲国产91精品一区二区久久| 亚洲欧美色综合| 三男一女不戴套的A片| 精品人妻一区二区三区-国产| 极品色| 狠狠躁AV| 五码视频在线观看| AV色五月天| 91强热人妻| 欧美日韩国产精品久久色婷婷| 国语对白在线播放视频| 亚洲中文字幕av| 日本99视频| 精品黄色电影| 伊人久久大香蕉线AV五月天| 强奸乱伦麻豆| 天天肏夜夜肏| 中文字幕视频在线观看一区二区| 国产福利视频精品视频| 国产吹潮女在线观看| 欧美在线视频99| 91美女在线观看| 麻豆福利视频导航| 久久精品国产96精品亚洲拳交| 日韩日韩日韩-国产乱码精品一区二区| 综合色图区| 欧美色图综合| 久久一本大香蕉| 狼人久草| 欧美中文字幕日韩在线| 四虎免费视频| 久久欧美按摩999| 欧美丰满少妇xx高潮| 超碰欧美COM| 中文字幕 一区二区 亚洲无码| 免费av在线播放二区| 97丝袜亚洲在线播放| 亚洲中文字幕熟女| 中文字幕精品人妻丝袜| 操高情无码| 亚洲 日本 不卡| 偷拍欧美激情| 中文字幕美女91| 中文字幕欧美日本乱码一线二线 | 九九九网站| 黄色成品网站| 黄色av一区二区在线| 亚洲日韩熟女人妻高清在线| 成人资源中文字幕在线观看天天| 久久亚洲欧美中文字幕国语| 成人一二三区| 韩日精品福利视频一区不卡在线免| 欧美黄色大香蕉一区二区| 亚洲在饯| 2019午夜福利视频| 偷拍网站久久男女男| 精品国产人成在线| 久久在线观看免费视频| 熟女熟妇一区二区三区视频| 九九九久千久久激情蜜桃在线看 | 欧美乱欲| 熟妇高潮精品一区二区三区下载| 熟妇在线视频一区二区| 人人人摸人人| 欲香欲色综合天天伊人| 欧美在线综合| 91色艳| 天天天天天干夜夜夜夜夜操| 无码天天操| 精品人妻一区二区三区在线视频不卡| 久久网亚洲| 中文字幕av久久爽Av| 国产自偷自拍一区| 91看黄片| 91东北熟女| 亚洲AV永久无码精品成人调教| 美女淫穴| yirendaxiangjiashipin| 久久小视频| 人妻 丝袜美腿 中文字幕| 国产亚洲精品一区二区三区| 久久区| 欧美人妖内射| 色九九久九九| 加勒比性爱成人在线| 99热精品国产| 粉嫩AV一区夜夜嗨| 18岁禁 茉莉成人久久| 九九天堂| 成人日本精品九区| 亚洲美欧999| 欧美极度丰满熟妇hd| 亚洲 欧美 日韩 国产一区二区| 东京热不卡视频| 91最新综合| 欧美性爱五月天| 亚洲综合一区二区| 亚洲精品精品一区二区| 欧美日韩性爱操大逼| 欧美日韩国产三级黄色| 国内偷自视频区视频综合| 亚洲精品久久久久毛片A片拉屎 | 青娱乐日韩无码| 中文字幕精品一区欧美| 欧美一级美片在线观看免费| 九九九九热| 午夜性刺激视频免费观看| 亚洲情色欧美| 蜜臀久久99精品久久久久久成人小说 | 九九九午夜| 另类综合另类| 亚洲成人一二三区| 成人久久无码www| 亚洲图片欧美制度| 91/欧美| 国产传媒一区日韩| 色娱乐色呦呦夜夜夜夜av| 伊人国产视频| 欧洲精品人妻| 尤物AV免费网站| 欧美大的香蕉有线电视视频| 97综合在线| 大香蕉乱级| 亚洲欧美在线观看免费| 日韩丝袜二区| 日韩成人精品中文字幕| 台湾佬中文娱乐自偷自拍| 亚洲欧洲色情高清| avav青青草久久夜| 99re这里只有精品9| 日本一区二区亚洲综合| 加勒比久久综合网高清| 免费啪啪啪网站18岁| 激情五月天色播| 神马精品视频| 中文字幕久久精品一区| 亚洲色图8| 欧美97| 国产精品久久久久亚洲av| 色婷婷综合网站| 亚洲va综合va国产va中文| 亚洲 日本 一 二 三| 国模91| 99精品视频在线观看| JIZZJIZZ亚洲女人被躁| 熟女色综合久久| a人欧美综合天堂麻豆| 色在线69堂| 人人操人人摸超碰| 99色热国产视频精品| 国产精品亚洲免费| 国产25页| 女人天堂av在线播放| 啪啪啪东京| 免费看一级a性色生活片久久无| 日本熟妇熟色97一本在线观看| 日韩电影天堂视频二区三区| 啊啊啊啊啊好多水| 亚欧Av| 口爆欧美91| 肥佬影院91| 日韩无码三级影院| 日亚韩精品视频二区三| 日本999精品视频| 强乱老妇中文字幕| www久久国产精品| 成视频在线观看免费看| 蜜臀久久在线视频| 欧美爱爱97| 欧美 亚洲 偷拍自拍| 久久久久久久国产| 97超碰超碰| 无码二级三级| 久久久专区| 国产精品乱码久久久久久久| 亚洲人天堂| 大香蕉乱伦视频网| 青青操视频在线| 激情黄色片在线观看| 色哟哟的毛片| 亚洲男人在线观看天堂| 亚洲一区日韩| 看看日B真人视频| 欧美一区二区三区另类精品| 超碰这里只有精品| 996热| 大香蕉宗合网在线| 夜夜青青无码影院| 国产最新小视频在线播放下载| 九九热精品在线| 日本欧美不卡| 丁香五月婷婷啪啪| 97超级久久| 99ri在线视频| 国产一区二区在线看| 亚乱色| 美女人妻色网站| 亚洲色图欧美色图另类图片| 草b在线| 一区在线精品中文字幕| Av色五月| Av手机版天堂网| 丝袜天堂| 欧美日韩国内不卡| 91精品91久久久久77777| 精品国产久热在线观看| 午夜性| 久久黄色视频一区二区三区| 亚洲色婷婷综合久久一区二区三区| 夜夜爽夜夜操| 中文字幕久热视频在线| 99视频在线| 97色色色综合网站| 丝袜美腿av女优在线| 26uuu国产成人综合| 天美传媒av 在线| 国产91专区| 天堂69亚洲精品中文字| 狠久久| 伊人热综合| 99ri在线视频| 小骚逼被操的爽不爽| 无码粉嫩白虎一线天b区| 家庭乱伦国产| 97超碰色五月| 久久久久久十| 日韩激情啪啪| 亚洲免费精品一区| 九九热九九| 一个人免费HD91视频| 青青草精品| 91色色网站| 五月婷婷五月天| 大香蕉日亚洲日本亚大| 99久久婷婷丁香| 国产精品一区二区后入| 亚洲高清国产理伦片| 99色骚| 午夜福利免费福利视频| 夜夜草网站| 一个人在线看的黄色电影网站| 蜜臀无码一区二区| 日韩成人高清一区二区| 天天干18禁| 国模久久在线| 美女91网站| 91成人久久| 91婷婷伊人狠人| 亚洲超碰综合网| 欧美在线55555| 免费观看国产不卡av| 久久九九一区二区三区成人| 青青操在线视频| 无码国产精品午夜不卡( | 本道在线| 襙一襙| 久久美女福利是上海美女| 亚洲色图欧美色图制服丝袜| 欧美78P| 日韩免费看黄片| 日夜干射色啊| 外国免费性情大片| 国产精品爽爽v| 熟女一区二区| 亚洲天天操| 久久98| 天美一区在线| 青春草莓视频在线观看网址| 婷婷精品| 欧美91久久久久| 亚洲自拍天堂| 天天摸天天碰天天添青青| 人妻少妇精品久久久久久久| 色婷网| 天天综合站| 国产精品美女在线一区| 久久精品国产99国产精品亚洲| 日日爱99| 七久久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 盗摄 精品 另类 一区| 中文精品少妇天堂| 激情天天视频| 亚洲国产一区二区三区在线 | 久精品无码av一区二免费国产在线观看| 欧美一二三区四五区| 性色A∨91| 美女操逼A A| 激情文学 国产一二三aV| 人妻丝袜美腿中文字幕| 99热成人| 黄页av| 大香蕉碰| 无码人妻一区二区三区色欲aⅴ | 天天综合亚在线| 五月天亚洲色图| 久久久久久久久久久97| 亚洲中字幕日本一区二区三区| 97精品国产97久久久久久| 在线中文字幕视频| 91色艳| 大香蕉一级黄色片久久| 精品免费1| 97AV在线观看| AV一二区| 成人七区| 国产嫩草精品A88AV| 日韩无码精品综合久久| 天堂伊人久久| 亚洲图片欧洲图片aⅴ| 久操电影网| 色久综合| 边做饭边操逼逼| 91色黑人少妇| AA特级绝黄| 大香蕉日韩欧美| 久久久一级| 国产精品成久久久久午夜午夜| www.男人天堂| 91老熟女老女人国产老太| 好吊色一区| 道久久五香丁月婷婷激情综合| 丰满人妻一区| 岛国毛片手机在线观看| 欧美性Fer办公室秘书| julia国产在线 | 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 一二三卡欧美日韩人妻免费精品| av资源在线观看少妇| 九九九九国产| 大香蕉啪啪啪啪在线| 色官网在线| 超碰97国产欧美| 亚洲一二三四区机械| 欧美日韩操操操| 长久操视频| 色婷婷五月天| 国产av强奸美女| 精品人妻高清麻豆av| 一二三啪啪专区| 日韩欧美性吧婷婷乱伦大香蕉 | 941超碰| 中文字幕高清20页视频| 无码高清操逼网址| 正宗无毛一线天嫩逼| 亚洲丝袜天堂| 亚洲一区中文字幕一区| 亚洲成人福利电影免费| 狠狠91| 91欧美网| 2019天天干天天操| 中日无幕一二三四区| 人妻喷水| 欧美国产伊人久久久久| 欧美少妇大量自拍视频在线观看| 欧美乱欲| 色偷综合| 大香蕉在线视频15| 五月天激情小说| 变态乱伦伪娘灌肠一区二区| 日韩欧美日韩| 成人情色综合网| 尤物av网站免费在线播放| 亚洲男人的天堂网| 嗯……啊…嗯嗯…啊…好舒服| 乱伦日本中文自拍| 怡红院网站在线视频| 裸模AV女优| 69人妻精品一区二区绯色| 又大又大又大又粗爽高潮观看 | 久久久影院| 精品少妇人妻av久久免费| 蜜臀久久99精品久久久电影| 亚洲综合校园春色| 熟妇精品juliaannAV| 色综合98| 激情文学网伊人| 国产福利第一视频| 亚洲免费人妻在| 狠狠中文字幕| 天天综合网91| 欧美精品激情| nuu12国产麻豆精品| 60秒免费小视频| a男人的天堂| 色五月婷婷麻豆在| 国产成人在线观看综合| 国产 热久久久久国产精品| 超碰97人人cao| 91啪啪| 色臀AV| 欧美天天影院| 亚洲国产福利视频| 欧美高潮| 夜夜免费视频| 97日视频| 嫩草影院永久在线制服丝袜| 一区二区三区四区久久视1| 97爱免费插| 中文字幕精品一区二区精品| 日日夜夜天天| 91美女在线观看| 97中文字幕一区| 日本潮催一卡操| 岛国色情视频在线观看| 国产操逼视频在线观看| 亚洲一级特黄大片在线播放91| 激情专区综合| 国产一级高清免费观看| 国产嫩草精品A88AV| 色噜噜人妻丝袜AV资源| 9/A片| 久久综合九九| 日韩精品区二区三区不卡| 久久久麻豆精品| 免费的黄片有限公司| 老子午夜伦不卡影院| 精品视频久久| 欧美久久人妻少妇一区二区| 久久女婷| 免费公开人人操| 免费成人自拍视频在线| 天天操天天看| 97这里都是精品| 色婷婷激情| 欧美人妻久久精品二区三区 | 日韩BBN| 人妻一区二区三区| 精品大久久| 国产欧美日韩精品中文| 无遮挡男女激烈动态图| 国产伊人精品在线| 夜夜嗨一区二区三区三州加勒比| 青青草九九九九九| 97操操| av资源在线播放天堂| 日韩图区 偷拍| 成人免费看吃奶视频网站| 国产黄色剧情影片麻豆免费播放| 久9精品| 国产成人久久精品蜜臀| 精品人妻一区二区三区在| 91精品国| 超碰色97| 天天综合网网欲色| 91av熟女人妻| 豆花视频操逼网址| 一起草欧美| 日韩在线观看字幕精品| 亚洲乱码国产乱码精网站| 亚洲成人日韩小说| www.国产高潮精品| 国产精品一区人妻精品阁在线| 91高潮喷水美女| 色综合色色| 丁香五月激情综合| 亚洲欧美不卡线| 国产精品4p在线观看| AV麻豆免费一区| 日韩欧视频| 亚洲加勒比色图| 久悠悠av| 久久精品视频28| 少妇熟女视频一二三区| 飘花国产午夜精品不卡| 亚州欧美在线| 欧美大香蕉久| 午夜精品久久久久久久99蜜桃一| 色蜜AV| 啊啊啊不要好爽日韩无码一区| 亚洲色天堂九9| 日韩熟女操逼| 操b在线观看| 日本黄色大片一级视频免费麻豆| 国产综合网站在线播放| 久久九九99| 91色综| 大香网伊人久久综合网eew| 欧美亚州色的图| 亚洲第一页色| 日本午夜久久电影| 国产精品交换一区二区| 97精品国产精品免费观看| 精品久久9| 黄色免费网| 欧美成人午夜免费福利785| 诱惑人妻欧美一区在线播放| 国色综合天| 国产成人自拍视频在线| 九一综合精品视品av| 欧美 亚洲 综合 制服 另类| 欧美激情亚洲| av在线不卡一区二区三区| 精品久久久av| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 亚洲色性| 久久久免费的精品| 日逼五月天| 视频不卡中文字幕| 97色碰| 风骚少妇视频中文字幕| 久久久久久久久久va| 亚洲日韩精品在线播放| 欧美曰韩国产精品| 加勒比综合| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲骚逼少妇| 女人喷水视频在线观看| 亚洲综合影片| 欧美日韩插逼视频| 不卡超碰护士AV在线免费播放| 国产丁香精品露脸视频 | 亚洲最大的综合性av| 精品十三区| 国产又黄又爽| 国产视频三区四区| 一起草高清无码| 日韩AV电影网站 | 亚洲综合校园春色| 精品国产91av一区二区三区| 日韩三级在线观看mp4| 大二网站亚洲| 天天天肏屄欧美| 久96热在线观看视频| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色性荡荡荡荡视频| 碰人碰碰人人开房人肉| 粉嫩av在线一区二区| 天天操天天谢| 强免费黄色网址| 精品然女一区二区| 国产精品成人久久一区二区三区| 97爱欧美| 精品久| www.久久99| 狠狠躁伊人中文字幕| 一二三区在线| 97在线观| 99精品在线观看| 国产97av| 人妻天天夜夜爽一区二区| 欧美激情久操网| 亚洲色图a| 日本东京热加勒比久久| 综合欧美日韩在线| 国产精品探花在线| 欧美第一页| 99久久婷婷丁香| 天天大干大香蕉| 亚洲无码色| 91老熟女视频| 色久综合| 欲香欲色| 精品国产乱码久久久兰草影视| 一级AV性爱| 9精品久久| 亚洲欧洲国产综合av| 欧美日综合| 欧美美女自慰一区二区三区| 国产91影院| 男人网站婷婷| 国产成人在线观看综合| 日韩精品午夜操呦呦不卡影院| 亚洲图片欧美日韩| 1000部熟女视频在线观看| 九九九九九九九九九五码| 欧美精品日韩久久久九| 日日嗷| 色色色综合网| 亚洲精品免费中文字幕| 久热99999| 中文伊人大香蕉视频| 久操网线| 91在线丝袜| 婷婷五月天激情网| 91亚洲欧美| 欧美少妇色综合| 性爱1区| 97操| 日本熟妇色熟妇在线视频播放| 乱伦日本色图AⅤ| JuliaAnn丝袜熟女系列| 成人综合视频久久| 天天操人人操狠狠插| 天天操天天干美女网址导航| 丁香五月天堂| 蜜乳成人AV| 熟女91网站| 国产a级精品| 亚洲aV性爱| 另类亚洲一区二区三区| 97在线欧| 99国产在线绯色一区| 岛园激情| 欧州一区二区三区四区| 欧美日日人人天天| 日韩人妻操B| aaaa黄片| 韩国三级一线观看久| 91痴汉| www.高清无码诱惑一区.com | 伦理第一页| www.男人天堂| 夜夜操av亚洲一区二区| 亚洲中文日韩精品| 免费国产电影一区二区| 久久久精品视频欧州站| 射丝袜高跟鞋99| 激情五月婷婷| 人人操人人操草草| AVE乱伦| 怡红院成人视频| 自拍亚洲综合| 妺妺跟我一起洗澡没忍住| 婷婷久久综合| 97chaopengongkai| 亚州Av天美传媒| 97超碰色屌| 成人片在线播放| 国产无马视频| 丰满人妻一区二区三区性色| 加勒比无码毛片| 久草精品一区| 久久婷婷国产一区二区色| 秋霞一级视频在线观看免费| 日韩av免费一级电影| 久久夜夜| 亚州欧美在线| 中文字幕一区二区三区蜜桃视频| 少妇六月天| 综合色图亚洲欧美| 国产av尤物| 综合激情婷婷| 青青操狠狠撩| 最近的最新的中文字幕视频| www.伪伪| 一区二区三区探花在线观看| 资源新线在线天堂| 婷婷丁香人妻 | 少妇久久久| 亚洲久久久| 丁香婷婷大香蕉| 手机不卡视频不卡在线一二三区| 狠狠干综合| 乱伦系列一区二区| 夜夜影视四色| 久久丝袜| 婷婷20月天青娱乐| 九九久久首页| 欧洲综合视频| 男人亚洲91首页在线| 欧美日韩国产在线| 欧州色图区| 综合色图亚洲欧美| 人妻激情另类| 又黄又爽在线观看视频| 性爱av网站| 国产一级黄色片在线观看| 8050午夜少妇无码| 国产精选视频| 91精品大奶人妻| 日韩无码服务区| 久久五月婷| 美国三级日本三级久久99| av资源在线观看少妇| 91亚.色| www激情| 啊啊啊爽爽| 天天干2019| 欧美人妖内射| 亚洲欲色9532548967一区| 国产三级片在线观看| 色99在线| 日B操| 熟妇人妻一区二区三区| 一二三四视频中文字幕在线看| 欧美熟妇精品黑人巨大一二三区| av无码av无码专区| 国产深喉视频一区二区| 99热精品青草在线 | 久久五月份| 日韩性爱小视频| 国产9熟妇视频网站| 澳门成人网站久国产日韩| 3p国产欧美99热| 国产亚洲女v在线观看| 超碰在线人人射| 强乱老妇中文字幕| 中国黑人三级片网站上区| 国产乱码久久| 亚洲丝袜二区| 免费一级视频特黄色大片| 国产女人与拘做受视频免费 | 欧美自拍网| 少妇人妻在线| 亚洲视频,小说| 欧美亚洲第1页| 久草资源在线视频官方总站日韩丝袜美腿 | AND人妻系列| 亚洲 日韩 欧美 国产综合体| 思思热影视| 中文字幕亚韩| 92午夜免费福利视频| 囯产精品久久久久久久久久梁医生| 2017天天操天天日| 综合网少妇| 国产精品网址| 亚洲精品蜜桃久久久| 福利一级版子| 91色人| 人人操人人摸超碰| 精品蜜乳AV免费观看| 丝袜剧情| 欧美人妻一区| 大香蕉啪啪网| 日韩成人午夜精品久久高潮| 97干色天堂| 久久久久幕乱码| 国产精品69久久久久久久| 午夜精品久久久久久久第一页按摩| 色天堂在线观看| 久久大香蕉手机高清视频| 一级特级aaaa毛片免费观看| 眼镜人妻101.com| 中文字幕青青草| 国产精品久久aV| 99re9在线| 久久产精品一区二区三区电影 | 高清无码一区二区三区| 婷婷中文网| 欧美色图成人网一区二区 | 男女啪啪网站免费视频| 精品成人av一区二区三区在线| 操死我干死我| 亚欧美综合网| 国产精品激情久久久久久久| 日韩免费在线观看不卡| 国产精品久久久久久久久久梁医生| 日本精品一级二级三级| 精品久久久高清无码| 亚乱色| www.色婷婷色综合| 9九九九九视频在线观看| 嫩草影院在线观看精品| 国产成人久久久精品免费AV| 国产免费一区在线观看| 最新国产精品久久精品| 97色视频在线| 超碰社区97| 上海一级黄片| 99热这里是精品| 操91| 日韩免费在线视频观看| 精品一区二区3区| 99久久免费看精品国产一区| 无码精品一区二区三区潘金莲| 97 亚洲 日韩 欧美 在线| 香蕉精品二区二区| 欧美人人AAA| 午夜无码熟妇丰满人妻|