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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CreatarGlobe实现多机立体显示方案(初稿)

發(fā)布時(shí)間:2023/12/29 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CreatarGlobe实现多机立体显示方案(初稿) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?CreatarGlobe實(shí)現(xiàn)多機(jī)立體顯示方案(初稿)

關(guān)鍵字 : 集群渲染 立體顯示 大屏幕 邊緣融合 多機(jī)同步

?

多機(jī)同步顯示

關(guān)鍵字: 大屏幕投影融合系統(tǒng)解決方案 集群渲染

?

多機(jī)3D同步顯示又稱“集群渲染”

目標(biāo)

實(shí)現(xiàn)如下圖的效果:

這個(gè) 3*2 的一個(gè)投影墻:(渲染節(jié)點(diǎn))

?

下面是對(duì)應(yīng)的主節(jié)點(diǎn)(master 節(jié)點(diǎn))

?

?

下面是CAVE模式:(三面CAVE)- 環(huán)幕

?

?

?

網(wǎng)絡(luò)編程相關(guān)知識(shí)

可使用的參考文檔 :

C++_Socket網(wǎng)絡(luò)編程大全

http://wenku.baidu.com/view/3f5ce1d5360cba1aa811da2b.html

Socket服務(wù)器與客戶端雙向通信實(shí)例

http://wenku.baidu.com/view/47a7877101f69e31433294a4.html?re=view

?

?

基礎(chǔ)知識(shí)1

●? winsock APIs

網(wǎng)絡(luò)連接函數(shù)
socket 創(chuàng)建套接字
bind 綁定本機(jī)端口
connect 建立連接
listen 監(jiān)聽端口
accept 接受連接
recv, recvfrom 數(shù)據(jù)接收
send, sendto 數(shù)據(jù)發(fā)送
close, shutdown 關(guān)閉套接字
轉(zhuǎn)換函數(shù)
inet_addr() 點(diǎn)分十進(jìn)制數(shù)表示的IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序的IP地址
inet_ntoa() 網(wǎng)絡(luò)字節(jié)序的IP地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制數(shù)表示的IP地址
字節(jié)順序轉(zhuǎn)換函數(shù)
htonl 4字節(jié)主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
ntohl  4字節(jié)網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序
htons 2字節(jié)主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
ntohs 2字節(jié)網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序
網(wǎng)絡(luò)信息檢索函數(shù)
gethostname 獲得主機(jī)名
getpeername 獲得與套接口相連的遠(yuǎn)程協(xié)議地址
getsockname 獲得套接口本地協(xié)議地址
gethostbyname 根據(jù)主機(jī)名取得主機(jī)信息
gethostbyaddr 根據(jù)主機(jī)地址取得主機(jī)信息
getprotobyname 根據(jù)協(xié)議名取得主機(jī)協(xié)議信息
getprotobynumber 根據(jù)協(xié)議號(hào)取得主機(jī)協(xié)議信息
getservbyname 根據(jù)服務(wù)名取得相關(guān)服務(wù)信息
getservbyport 根據(jù)端口號(hào)取得相關(guān)服務(wù)信息
getsockopt/setsockopt 獲取/設(shè)置一個(gè)套接口選項(xiàng)
ioctlsocket 設(shè)置套接口的工作方式

?

參考 http://www.doc88.com/p-5929803397139.html

?

?

?

?

?

?

?

基礎(chǔ)知識(shí)2

參考 http://www.cnblogs.com/uvsjoh/archive/2012/12/23/2830299.html

Windows網(wǎng)絡(luò)編程使用winsock。Winsock是一個(gè)基于Socket模型的API,在Windows系統(tǒng)中廣泛使用。
使用Winsock進(jìn)行網(wǎng)絡(luò)編程需要包含頭文件Winsock2.h,需要使用庫(kù)ws2_32.lib,包含方法:可以使用語(yǔ)句來告訴編譯器連接該庫(kù)
#pragma comment(lib, “ws2_32.lib”);
如果使用VS,可以通過“項(xiàng)目” --> “XX屬性”--> “連接器”-->“輸入”--> “附加依賴項(xiàng)”添加ws2_32.lib。 (XX為當(dāng)前工程名)

面向連接的C/S程序工程流程圖


使用Winsock API編制的網(wǎng)絡(luò)應(yīng)用程序中,在調(diào)用任何一個(gè)Winsock函數(shù)之前都必須檢查協(xié)議棧安裝情況,使用函數(shù)WSAStartup()完成操作。
一個(gè)服務(wù)端的例子

void server::startServer() { ??? WORD wVersionRequested; ??? WSADATA wsaData; ??? wVersionRequested=MAKEWORD(2,2); ??? if(WSAStartup(wVersionRequested,&wsaData)!=0) ??? { ??????? //Winsock初始化錯(cuò)誤??????? msgBox.exec(); ??????? return; ??? } ??? if(wsaData.wVersion!=wVersionRequested) ??? { ??????? //Winsock版本不匹配??????? ????????WSACleanup(); ??????? return; ??? } ??? if ((m_sk = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) ??? {??????? ????????WSACleanup(); ??????? return; ??? } ??? bool ok; ??? unsigned short port = ui.portLineEdit->text().toInt(&ok, 10); ??? if (ok == false) ??? { ??????? //端口輸入錯(cuò)誤??????? closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? return; ??? } ??? sockaddr_in addr; ??? addr.sin_family = AF_INET; //使用互聯(lián)網(wǎng)際協(xié)議,即IP協(xié)議 ??? addr.sin_port = htons(port); ??? addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); ??? if (bind(m_sk, (sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) ??? { ??????? //綁定端口失敗 ??????? closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? return; ??? } ??? if (listen(m_sk, 10) == SOCKET_ERROR) ??? { ??????? //監(jiān)聽端口失敗??????? closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? return; ??? } ??? updateMsgRecs(tr("等待連接...")); ??? //創(chuàng)建線程去等待連接 ??? HANDLE h = CreateThread(NULL, 0, &server::acceptProc, (LPVOID)this, 0, 0); ??? if (h == NULL) ??? {??????? ????????closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? return;??????? ????} ??? CloseHandle(h); }

監(jiān)聽線程函數(shù)

DWORD WINAPI server::acceptProc(LPVOID lpParamter) { ??? /*server *p_server = (server *)lpParamter; ??? sockaddr_in client_addr; ??? int len = sizeof(client_addr); ??? char msgBuff[256]; ??? int sk; ??? while (1) ??? { ??????? if ((sk = ::accept(p_server->sk(), (sockaddr*)&client_addr, &len) )== SOCKET_ERROR) ??????? { ??????????? emit p_server->haveNewMsg(QObject::tr("accept 出錯(cuò)")); ??????????? break; ??????? } ??????? ????????sprintf(msgBuff, "新連接來自%s", inet_ntoa(client_addr.sin_addr)); ??????? emit p_server->haveNewMsg(msgBuff); ??????? emit p_server->newClient(inet_ntoa(client_addr.sin_addr), sk); ?? ?}*/ ??? server *p_server = (server *)lpParamter; ??? int client[FD_SETSIZE]; ??? fd_set allset, rset; ??? sockaddr_in client_addr; ??? int len; ??? int clientfd; ??? int sockfd; ??? int i; ??? for (i=0; i<FD_SETSIZE; i++) ??????? client[i] = -1; ??? FD_ZERO(&allset); ??? int listenfd = p_server->sk(); ??? FD_SET(listenfd, &allset); ??? int nready; ??? int maxfd = listenfd; ??? int maxi = -1; ??? char buff[MAX_LEN+1]; ??? while (1) ??? { ??????? rset = allset; ??????? nready = select(maxfd+1, &rset, NULL, NULL, NULL); ??????? if (FD_ISSET(listenfd, &rset)) //new connection??????? { ??????????? len = sizeof(client_addr); ??????????? if ( (clientfd = ::accept(p_server->sk(), (sockaddr*)&client_addr, &len)) == SOCKET_ERROR) ??????????? { ??????????????? emit p_server->haveNewMsg(QObject::tr("accept 出錯(cuò)")); ??????????????? break; ??????????? } ??????????? //找出client數(shù)組中第一個(gè)為-1的單元存放已經(jīng)連接的socket ??????????? for (i=0; i<FD_SETSIZE; i++) ??????????? { ??????????????? if (client[i] <0) ??????????????? { ??????????????????? client[i] = clientfd; ?????? ?????????????break; ??????????????? } ??????????? } ??????????? if (i == FD_SETSIZE) ??????????? { ??????????????? emit p_server->haveNewMsg(QObject::tr("error: too many clients!")); ??????????????? break; ??????????? } ??????????? //sprintf(buff, "新連接來自%s", inet_ntoa(client_addr.sin_addr)); ??????????? //emit p_server->haveNewMsg(buff); ??????????? emit p_server->newClient(inet_ntoa(client_addr.sin_addr), clientfd); ??????????? FD_SET(clientfd, &allset); ??????????? if (clientfd > maxfd) ??????????????? maxfd = clientfd; ??????????? if (i>maxi) ??????????????? maxi = i; ??????????? if (--nready <= 0) ??????????????? continue; ??????? } ??????? for (i=0; i<=maxi; i++) ??????? { ??????????? if ( (sockfd = client[i]) < 0) ??????????????? continue; ??????????? if (FD_ISSET(sockfd, &rset)) ??????????? { ??????????????? int n; ??????????????? //客戶端已經(jīng)關(guān)閉連接 ??????????????? if ( (n = recv(sockfd, buff, MAX_LEN, 0 )) <= 0) ??????????????? { ??????????????????? closesocket(sockfd); ??????????????????? FD_CLR(sockfd, &allset); ??????????????????? client[i] = -1; ??????????????????? emit p_server->haveNewMsg(QObject::tr("client closed")); ??????????????????? emit p_server->sClientClose(sockfd); ??????????????? } ??????????????? else //收到數(shù)據(jù)??????????????? { ??????????????? ????buff[n] = 0; ??????????????????? emit p_server->haveNewMsg( buff, sockfd); ??????????????????? if (--nready <= 0) ??????????????????????? break; ??????????????? } ??????????? } ??????? } //for (i=0; i<=maxi; i++)??? } ??? return 0; }

?

?一個(gè)客戶端的例子

void client::connectServer() { ??? WORD wVersionRequested; ??? WSADATA wsaData; ??? wVersionRequested=MAKEWORD(2,2); ??? if(WSAStartup(wVersionRequested,&wsaData)!=0) ??? { ??????? //Winsock初始化錯(cuò)誤 ??????? QMessageBox msgBox(QMessageBox::Warning, tr("錯(cuò)誤"), tr("Winsock初始化錯(cuò)誤"), QMessageBox::Ok, 0); ??????? msgBox.exec(); ??????? return; ??? } ??? if(wsaData.wVersion!=wVersionRequested) ??? { ??????? //Winsock版本不匹配 ??????? QMessageBox msgBox(QMessageBox::Warning, tr("錯(cuò)誤"), tr("Winsock版本不匹配"), QMessageBox::Ok, 0); ??????? msgBox.exec(); ??????? WSACleanup(); ??????? return; ??? } ??? if ((m_sk = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) ??? { ??????? QMessageBox msgBox(QMessageBox::Warning, tr("錯(cuò)誤"), tr("創(chuàng)建socket失敗"), QMessageBox::Ok, 0); ??????? msgBox.exec(); ??????? WSACleanup(); ??????? return; ??? } ??? sockaddr_in addr; ??? addr.sin_family = AF_INET; ??? bool ok; ??? unsigned short port = ui.portLineEdit->text().toInt(&ok, 10); ??? if (ok == false) ??? { ??????? QMessageBox msgBox(QMessageBox::Warning, tr("錯(cuò)誤"), tr("端口輸入錯(cuò)誤"), QMessageBox::Ok, 0); ??????? msgBox.exec(); ??????? closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? return; ??? } ?? ?addr.sin_port? = htons(port); ??? addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); ??? if (0 == ::connect(m_sk, (sockaddr *)&addr, sizeof(addr))) ??? { ??????? updateMsgRecs(tr("連接成功...")); ??????? HANDLE h = CreateThread(NULL, 0, &client::recvProc, (LPVOID)this, 0, 0); ??????? CloseHandle(h); ??? } ??? else ??? { ??????? QMessageBox msgBox(QMessageBox::Warning, tr("錯(cuò)誤"), tr("連接出錯(cuò)"), QMessageBox::Ok, 0); ??????? msgBox.exec(); ??????? closesocket(m_sk); ??????? m_sk = -1; ??????? WSACleanup(); ??????? ????} }

●? winsock APIs

網(wǎng)絡(luò)連接函數(shù)
socket 創(chuàng)建套接字
bind 綁定本機(jī)端口
connect 建立連接
listen 監(jiān)聽端口
accept 接受連接
recv, recvfrom 數(shù)據(jù)接收
send, sendto 數(shù)據(jù)發(fā)送
close, shutdown 關(guān)閉套接字
轉(zhuǎn)換函數(shù)
inet_addr() 點(diǎn)分十進(jìn)制數(shù)表示的IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序的IP地址
inet_ntoa() 網(wǎng)絡(luò)字節(jié)序的IP地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制數(shù)表示的IP地址
字節(jié)順序轉(zhuǎn)換函數(shù)
htonl 4字節(jié)主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
ntohl  4字節(jié)網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序
htons 2字節(jié)主機(jī)字節(jié)序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
ntohs 2字節(jié)網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序
網(wǎng)絡(luò)信息檢索函數(shù)
gethostname 獲得主機(jī)名
getpeername 獲得與套接口相連的遠(yuǎn)程協(xié)議地址
getsockname 獲得套接口本地協(xié)議地址
gethostbyname 根據(jù)主機(jī)名取得主機(jī)信息
gethostbyaddr 根據(jù)主機(jī)地址取得主機(jī)信息
getprotobyname 根據(jù)協(xié)議名取得主機(jī)協(xié)議信息
getprotobynumber 根據(jù)協(xié)議號(hào)取得主機(jī)協(xié)議信息
getservbyname 根據(jù)服務(wù)名取得相關(guān)服務(wù)信息
getservbyport 根據(jù)端口號(hào)取得相關(guān)服務(wù)信息
getsockopt/setsockopt 獲取/設(shè)置一個(gè)套接口選項(xiàng)
ioctlsocket 設(shè)置套接口的工作方式

winsock client & server

分類: winsock 2013-05-07 21:36 489人閱讀 評(píng)論(0) 收藏 舉報(bào)

winsock

// winsock client.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
客戶端實(shí)例

//vs2010編譯通過

#include "stdafx.h"


#include <winsock2.h>
#include <stdio.h>

#define SERVPORT??? 5050????????????? // 端口為5050
#define MAXDATASIZE 100
#define SERVIP????? "127.0.0.1"????? //
服務(wù)器IP地址為"127.0.0.1",注意使用inet_addrIP地址轉(zhuǎn)換為網(wǎng)絡(luò)格式
#pragma comment(lib,"ws2_32.lib")

void main(int argc, char *argv[])
{
?WSADATA????????????? wsaData;
?SOCKET?????????????? sConnect;
?SOCKADDR_IN????????? serverAddr;?
?int?????recvbytes;
?char?????buf[MAXDATASIZE];

?//初始化Windows Socket 2.2

?WSAStartup(MAKEWORD(2,2), &wsaData);

?// 創(chuàng)建一個(gè)新的Socket來連接服務(wù)器

?sConnect = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

?// 填寫連接地址信息

?serverAddr.sin_family = AF_INET;
?serverAddr.sin_port = htons(SERVPORT);???
?serverAddr.sin_addr.s_addr = inet_addr(SERVIP);

?memset(&(serverAddr.sin_zero), 0, sizeof(serverAddr.sin_zero));

?// 向服務(wù)器發(fā)出連接請(qǐng)求

?if (connect(sConnect, (SOCKADDR *)&serverAddr, sizeof(SOCKADDR)) == SOCKET_ERROR)
?{
??printf("connect failed!\n");
??system("pause");
??return;
?}
?//
接受服務(wù)器的回應(yīng)消息
?recvbytes = recv(sConnect, buf, MAXDATASIZE, 0);
?if (recvbytes == SOCKET_ERROR)
?{
??system("pause");
??printf("recv failed!\n");
?}
?else
?{
??buf[recvbytes] = '\0';
??printf("%s\n",buf);
?}

?closesocket(sConnect);

?// 釋放Windows Socket DLL的相關(guān)資源

?system("pause");
?WSACleanup();
}
?

// winsock server.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
服務(wù)器端實(shí)例

//vs2010端編譯通過

#include "stdafx.h"


#include <winsock2.h>
#include <stdio.h>

#define SERVPORT??? 5050
#pragma comment(lib,"ws2_32.lib")

void main(void)
{
?WSADATA????????????? wsaData;
?SOCKET?????????????? sListen;??//
監(jiān)聽socket
?SOCKET?????????????? sClient;??//
連接socket
?SOCKADDR_IN????????? serverAddr;??//
本機(jī)地址信息
?SOCKADDR_IN????????? clientAddr;??//
客戶端地址信息
?int????????????? clientAddrLen;?//
地址結(jié)構(gòu)的長(zhǎng)度
?int????????????????? nResult;
?//
初始化Windows Socket 2.2

?WSAStartup(MAKEWORD(2,2), &wsaData);

?// 創(chuàng)建一個(gè)新的Socket來響應(yīng)客戶端的連接請(qǐng)求

?sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

?// 填寫服務(wù)器綁定的地址信息
?//
端口為5050
?// IP
地址為INADDR_ANY,響應(yīng)每個(gè)網(wǎng)絡(luò)接口的客戶機(jī)活動(dòng)
?//
注意使用htonlIP地址轉(zhuǎn)換為網(wǎng)絡(luò)格式

?serverAddr.sin_family = AF_INET;
?serverAddr.sin_port = htons(SERVPORT);???
?serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
?memset(&(serverAddr.sin_zero), 0, sizeof(serverAddr.sin_zero));??
?//
綁定監(jiān)聽端口

?nResult = bind(sListen, (SOCKADDR *)&serverAddr, sizeof(SOCKADDR));
?if (nResult == SOCKET_ERROR)
?{
??printf("bind failed!\n");

??return;
?}

?// 開始監(jiān)聽,指定最大接受隊(duì)列長(zhǎng)度5,不是連接數(shù)的上限

?listen(sListen, 5);

?// 接受新的連接
?while(1)
?{
??clientAddrLen = sizeof (SOCKADDR);
??sClient = accept(sListen, (SOCKADDR *)&clientAddr, &clientAddrLen);
??if(sClient == INVALID_SOCKET)
??{
???printf("Accept failed!");
??}
??else
??{
???printf("Accepted client: %s : %d\n", inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port));
???//
向客戶端發(fā)送信息
???nResult = send(sClient, "Connect success!", 16, 0);
???if (nResult == SOCKET_ERROR)
???{
????printf("send failed!");
???}
??}
??//
我們直接關(guān)閉連接,
??closesocket(sClient);
?}?


?// 并關(guān)閉監(jiān)聽Socket,然后退出應(yīng)用程序

?closesocket(sListen);

?// 釋放Windows Socket DLL的相關(guān)資源

?WSACleanup();
}

?

多機(jī)同步(多線程同步)

采用Event事件和等待waitfor...機(jī)制實(shí)現(xiàn)跨機(jī)同步。

WaitForSingleObject

等待函數(shù)可使線程自愿進(jìn)入等待狀態(tài),直到一個(gè)特定的內(nèi)核對(duì)象變?yōu)橐淹ㄖ獱顟B(tài)為止。這些等待函數(shù)中最常用的是WaitForSingleObject:

DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);

HANDLE經(jīng)常使用 CEvent對(duì)象,在程序中可以通過調(diào)用SetEvent/ResetEvent分別將EVENT置為這兩種狀態(tài)分別是發(fā)信號(hào)與不發(fā)信號(hào)。

?

參考 :

WaitForSingleObject的用法

http://blog.sina.com.cn/s/blog_4b88ef57010009js.html

線程中CreateEvent和SetEvent及WaitForSingleObject的用法

http://chinaxyw.iteye.com/blog/548622

?

?

WaitForMultiObjects

用法類似于waitForSingleObjects只不過是多信號(hào)等待。

?

?

?

原理分析

?

多機(jī)同步顯示示意圖

?

多機(jī)同步的實(shí)現(xiàn)原理實(shí)際是控制master和slaver上的投影機(jī)姿態(tài)矩陣,將二者綁定在一起,就像是架在一根竹棍上的兩個(gè)相機(jī)一樣,一起做相同的運(yùn)動(dòng),這樣集群中的所有相機(jī)的相對(duì)位置相同,姿態(tài)也相對(duì)不變,投影畫面也就能夠始終保持無(wú)縫拼接了。

?

疑問: 重疊區(qū)域地物的調(diào)度需要怎么才能保證多臺(tái)機(jī)器同時(shí)出現(xiàn)同時(shí)消失?不控制是否可以接受?

??? 如果不控制的話在重疊區(qū)域就很容易出現(xiàn)建筑物的亮度比非重疊區(qū)亮度低的情況(因?yàn)橹丿B區(qū)做了融合處理削弱了亮度),尤其是在邊緣處亮度接近于全黑。

?

流程設(shè)計(jì)

  • 1. ?啟動(dòng)集群所有計(jì)算機(jī)中的creatar軟件,creatar通過網(wǎng)絡(luò)廣播反饋或者自定義配置文件方式 確定集群中的 主控機(jī)master(一臺(tái))和從屬機(jī)slaver(一臺(tái)或多臺(tái))角色, 建立主控機(jī)master與從屬機(jī)slaver之間的通訊通道(每臺(tái)slaver和master之間都有一個(gè)通訊線程存在)。
  • 主控機(jī)向從屬機(jī)發(fā)送的信息為 “相機(jī)矩陣” 和 “翻屏指令”, 接受的信息為從屬機(jī)發(fā)來的 “等待翻屏指令”。從屬機(jī)向主控機(jī)發(fā)送的信息為 “等待翻屏指令”,接收的信息是“相機(jī)矩陣”。【細(xì)化】

    ?

    一般這種多機(jī)顯示應(yīng)用都要設(shè)計(jì)一個(gè)獨(dú)立的控制界面,放在主控機(jī)master的集成顯卡顯示區(qū)域。主控機(jī)的專業(yè)3D顯卡和從屬機(jī)3D顯卡顯示3D系統(tǒng)的3D視圖畫面。

    ?

  • 2. ?固定從屬機(jī)slaver的相機(jī)與主控機(jī)master的相機(jī)之間的姿態(tài)差異,這樣只要初始狀態(tài)時(shí)的master和slavers的相機(jī)的投影畫面能無(wú)縫拼合在一起,未來master的相機(jī)做了怎樣的矩陣變換,slavers的相機(jī)也跟隨做相應(yīng)的矩陣變換就能保證投影畫面能始終無(wú)縫拼合。這樣就需要每幀master都要把它的“相機(jī)矩陣”發(fā)給slaver,或者把其變換矩陣發(fā)給slaver,slaver根據(jù)收到的矩陣做相同的姿態(tài)改變就可以了。
  • ?

    3. 流程圖如下所示

    ?

    ?

    會(huì)用到windows多線程編程的阻塞機(jī)制,master上建議使用WaitForMultiObjects(),slaver上建議使用WaitForSingleObject()來阻塞渲染線程。

    ?

    實(shí)現(xiàn)細(xì)節(jié)

    winsock廣播

    參考資料 http://www.cnblogs.com/uvsjoh/archive/2012/12/28/2837687.html

    廣播通信是無(wú)連接的通信,通信前不需要建立連接。不需要listen和accept,但需要綁定一個(gè)socket用來接收廣播。

    ?廣播包的發(fā)送
    創(chuàng)建socket
    設(shè)置socket,例如設(shè)置超時(shí)、允許廣播等
    綁定socket。在使用廣播前必須綁定一個(gè)socket。這一步可有可無(wú),如果沒有,系統(tǒng)自動(dòng)綁定到一個(gè)未用端口。
    發(fā)送廣播。廣播的端口號(hào)要和接收方綁定的端口號(hào)一致

    #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> #include <string.h> #pragma comment(lib, "ws2_32.lib") void autoCleanup() { ??? WSACleanup(); } int _tmain(int argc, _TCHAR* argv[]) { ??? WORD wVersionRequested; ??? WSADATA wsaData; ??? wVersionRequested=MAKEWORD(2,2); ??? int ret; ??? ret = WSAStartup(wVersionRequested,&wsaData); ??? int sock = socket(AF_INET, SOCK_DGRAM, 0); ??? int bc = 1; ??? //允許發(fā)送廣播消息 ??? int so_broadcast = TRUE; ??? ret = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&so_broadcast, sizeof(so_broadcast)); ??? ????//sockaddr_in addr; ??? //addr.sin_family = AF_INET; //使用互聯(lián)網(wǎng)際協(xié)議,即IP協(xié)議 ??? //addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); ????//addr.sin_port = htons(2526); ??? //如果僅僅是發(fā)送廣播,這一步可有可無(wú)。沒有綁定也能發(fā)送廣播 ??? //ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr)); ??? struct sockaddr_in b_addr; ??? b_addr.sin_family = AF_INET; ??? b_addr.sin_addr.S_un.S_addr =htonl(INADDR_BROADCAST); ??? b_addr.sin_port = htons(2527); ??? char buff[50] = "Hello, world!"; ??? while (1) ??? { ??????? ret = sendto(sock, buff, strlen(buff), 0, (struct sockaddr*)&b_addr, sizeof(b_addr)); ??????? printf("send... %d\n", WSAGetLastError()); ??????? Sleep(3000); ??? } ??? closesocket(sock); ??? atexit(autoCleanup); ??? return 0; }

    ?接收廣播包
    接收方一定要知道廣播方的端口號(hào),然后綁定同樣的端口號(hào)才能正確接收。道理很簡(jiǎn)單,如果不綁定到一個(gè)端口,它不知道到哪里接收數(shù)據(jù)。

    // send.cpp : Defines the entry point for the console application.// #include "stdafx.h" #include <WinSock2.h> #include <Windows.h> #include <string.h> #pragma comment(lib, "ws2_32.lib") void autoCleanup() { ??? WSACleanup(); } int _tmain(int argc, _TCHAR* argv[]) { ??? WORD wVersionRequested; ??? WSADATA wsaData; ??? wVersionRequested=MAKEWORD(2,2); ??? WSAStartup(wVersionRequested,&wsaData); ??? SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); ??? struct sockaddr_in addr; ??? addr.sin_family = AF_INET; ??? addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); ??? //這個(gè)端口要和廣播方廣播端口一致 ??? addr.sin_port = htons(2527); ??? bind(sock, (struct sockaddr *)&addr, sizeof(addr)); ??? struct sockaddr_in from; ??? int len = sizeof(from); ??? int ret; ??? char buff[50]; ??? while (1) ??? { ??????? ret = recvfrom(sock, buff, 49, 0, (struct sockaddr *)&from, &len); ??????? if (ret > 0) ??????? { ??????????? buff[ret] = 0; ??????? ????printf("%s\n", buff); ??????????? printf("%s %d\n", inet_ntoa(from.sin_addr), ntohs(from.sin_port)); ??????? } ??? } ??? closesocket(sock); ??? atexit(autoCleanup); ??? return 0; }

    winsock網(wǎng)絡(luò)通訊

    利用winsock編寫網(wǎng)絡(luò)應(yīng)用程序服務(wù)端的步驟簡(jiǎn)述如下
    WSAStartup 初始化網(wǎng)絡(luò)編程庫(kù)
    socket 創(chuàng)建套接字
    bind 指定地址、端口,綁定套接字
    listen 進(jìn)入監(jiān)聽狀態(tài)
    accept 等待接收新連接
    send/recv 收發(fā)數(shù)據(jù)
    closesocket 關(guān)鍵套接字
    WSAStartup 釋放對(duì)動(dòng)態(tài)庫(kù)的使用

    ?

    參考資料

    C++_Socket網(wǎng)絡(luò)編程大全

    http://wenku.baidu.com/view/3f5ce1d5360cba1aa811da2b.html

    Socket服務(wù)器與客戶端雙向通信實(shí)例

    http://wenku.baidu.com/view/47a7877101f69e31433294a4.html?re=view

    Windows網(wǎng)絡(luò)編程

    http://www.cnblogs.com/uvsjoh/archive/2012/12/23/2830299.html

    MSDN上的客戶端代碼(Winsock Client Source Code)

    http://www.cnblogs.com/wwping/archive/2012/04/18/2454979.html

    ?

    ?

    ?

    面向連接的C/S程序工程流程圖

    ?

    字節(jié)序轉(zhuǎn)換函數(shù)
    htons 把 unsigned short 類型從主機(jī)序轉(zhuǎn)換到網(wǎng)絡(luò)序
    htonl 把 unsigned long 類型從主機(jī)序轉(zhuǎn)換到網(wǎng)絡(luò)序
    ntohs 把 unsigned short 類型從網(wǎng)絡(luò)序轉(zhuǎn)換到主機(jī)序
    ntohl 把 unsigned long 類型從網(wǎng)絡(luò)序轉(zhuǎn)換到主機(jī)序
    這幾個(gè)函數(shù)很好記,比如htons中hton代表host to network, s代表unsigned short
    char FAR * inet_ntoa( struct in_addr in);
    將一個(gè)IP轉(zhuǎn)換成一個(gè)互聯(lián)網(wǎng)標(biāo)準(zhǔn)點(diǎn)分格式的字符串。
    in_addr_t inet_addr(const char *cp);
    將一個(gè)點(diǎn)分十進(jìn)制的IP轉(zhuǎn)換成一個(gè)長(zhǎng)整數(shù)型數(shù)(u_long類型)。返回值已是網(wǎng)絡(luò)字節(jié)順序,可以直接作為internet 地址

    ?

    Openscenegraph單機(jī)立體顯示

    參考資料

    osg中立體顯示的設(shè)置“最長(zhǎng)的一幀”第三日

    osg::DisplaySettings 這個(gè)類在OSG 的窗口顯示中扮演了重要的地位:它保存了OSG 目前用到的,與圖形顯示,尤其是立體顯示有關(guān)的所有信息,

    主要包括:

    _displayType:顯示器類型,默認(rèn)為MONITOR(監(jiān)視器),此外還支持POWERWALL

    (威力墻),REALITY_CENTER(虛擬實(shí)境中心)和HEAD_MOUNTED_DISPLAY(頭盔

    顯示器)。

    _stereoMode : 立體顯示模式, 默認(rèn)為ANAGLYPHIC ( 互補(bǔ)色), 此外還支持

    QUAD_BUFFER(四路緩沖),HORIZONTAL_SPLIT(水平分割),VERTICAL_SPLIT(垂直分割),LEFT_EYE(左眼用),RIGHT_EYE(右眼用),HORIZONTAL_INTERLACE(水平交錯(cuò)),VERTICAL_INTERLACE(垂直交錯(cuò)),CHECKERBOARD(棋盤式交錯(cuò),用于DLP 顯示器)。

    _eyeSeparation:雙眼的物理距離,默認(rèn)為0.05。

    _screenWidth,_screenHeight:屏幕的實(shí)際寬度和高度,分別默認(rèn)設(shè)置為0.325 和0.26,

    目前它們影響的僅僅是視圖采用透視投影時(shí)的寬高比。

    _screenDistance:人眼到屏幕的距離,默認(rèn)為0.5。

    _splitStereoHorizontalEyeMapping:默認(rèn)為L(zhǎng)EFT_EYE_LEFT_VIEWPORT(左眼渲染左

    視口),也可設(shè)為L(zhǎng)EFT_EYE_RIGHT_VIEWPORT(左眼渲染右視口)。

    _splitStereoHorizontalSeparation:左視口和右視口之間的距離(像素?cái)?shù)),默認(rèn)為0。

    _splitStereoVerticalEyeMapping:默認(rèn)為L(zhǎng)EFT_EYE_TOP_VIEWPORT(左眼渲染頂視

    口),也可設(shè)為L(zhǎng)EFT_EYE_BOTTOM_VIEWPORT(左眼渲染底視口)。

    _splitStereoVerticalSeparation:頂視口和底視口之間的距離(像素?cái)?shù)),默認(rèn)為0。

    _splitStereoAutoAdjustAspectRatio:默認(rèn)為true,用于屏幕分割之后對(duì)其寬高比進(jìn)行補(bǔ)

    償。

    _maxNumOfGraphicsContexts:用戶程序中最多可用的GraphicsContext(圖形設(shè)備上下

    文)數(shù)目,默認(rèn)為32 個(gè)。

    _numMultiSamples:多重采樣的子像素樣本數(shù),默認(rèn)為0。如果顯示卡支持的話,打開

    多重采樣可以大幅改善反走樣(anti-aliasing)的效果。

    此外還有很多可以設(shè)置的類變量,如_minimumNumberStencilBits(模板緩存的最小位

    數(shù))等,其默認(rèn)設(shè)置均在osg::DisplaySettings::setDefaults 函數(shù)中完成,其中有些變量可能還

    沒有作用。要注意的是,DisplaySettings 的作用僅僅是保存所有可能在系統(tǒng)顯示中用到的數(shù)

    據(jù),這個(gè)類本身并不會(huì)據(jù)此改變?nèi)魏蜗到y(tǒng)設(shè)置和渲染方式。

    值得稱道的是,DisplaySettings 可以很方便地從系統(tǒng)環(huán)境變量或者命令行參數(shù)中獲取用

    戶對(duì)顯示設(shè)備的設(shè)置,詳細(xì)的調(diào)用方法可以參閱DisplaySettings::readEnvironmentalVariables

    和DisplaySettings::readCommandLine 兩個(gè)函數(shù)的內(nèi)容,十分通俗易懂。

    如果希望在用戶程序中更改DisplaySettings 中的顯示設(shè)置,請(qǐng)務(wù)必在執(zhí)行視景器的

    realize 函數(shù)之前,當(dāng)然也就是仿真循環(huán)開始之前。這一點(diǎn)也是要切記的。

    ?

    分析及方案設(shè)計(jì)

    目前通用的立體實(shí)現(xiàn)模式有兩種:主動(dòng)式立體和被動(dòng)式立體

    主動(dòng)式立體顯示

    ???? 主動(dòng)立體顯示方式也稱快門式3D顯示技術(shù),主動(dòng)快門式3D技術(shù)是目前3D投影設(shè)備市場(chǎng)上應(yīng)用比較廣泛的3D顯示技術(shù),其需要配合主動(dòng)快門式眼鏡使用,原理是這樣的:屏幕會(huì)先顯示給左眼看的畫面,這時(shí)眼鏡會(huì)同步將你的右眼遮住,有點(diǎn)像海盜戴的眼罩那樣。接著,屏幕會(huì)快速切換到給右眼看的畫面,這時(shí)眼鏡就會(huì)轉(zhuǎn)成將你的左眼遮住,確保你看到的畫面是正確的。??

    ????? 主動(dòng)快門式3D技術(shù)是通過交替左眼和右眼看到的圖像以至于你的大腦將兩幅圖像融合成一體來實(shí)現(xiàn),從而產(chǎn)生了單幅圖像的3D立體感。畫面交替的過程非常迅速,每秒可以到120次(120Hz刷新率),因此對(duì)人眼來說是無(wú)法看到這個(gè)左右轉(zhuǎn)換的。??

    ????? 主動(dòng)立體的主要技術(shù)特征:同步發(fā)射器及快門式眼鏡、支持120Hz輸出的融合器、支持120Hz投影機(jī)。

    ?

    這種情況下osg::DisplaySettings應(yīng)設(shè)置如下:

    _displayType使用默認(rèn)值 MONITOR(監(jiān)視器),

    _stereoMode 使用默認(rèn)值 ANAGLYPHIC ( 互補(bǔ)色)

    其它參數(shù)使用默認(rèn)值即可。

    評(píng)價(jià) 這種模式對(duì)3D程序的渲染速率要求很高(120幀每秒)一般的3D軟件都難以達(dá)到,所以應(yīng)用比較多的是3D視頻播放或3D電影領(lǐng)域。聽說這么高的頻率下人眼也是很容易累的,而且這種3D影片的制作難度也比較大。

    被動(dòng)式立體顯示

    ????? 被動(dòng)立體顯示方式也稱光學(xué)偏振顯示技術(shù),主要實(shí)現(xiàn)方式:通過兩臺(tái)顯示設(shè)備(投影機(jī)),同時(shí)把兩個(gè)經(jīng)過特殊處理(立體處理)的圖像或影片同步放映,使這略有差別的兩幅圖像(景深差別)重疊在銀幕上(偏振光學(xué)幕)。這時(shí)如果用眼睛直接觀看,看到的畫面是重影模糊不清的,要看到立體影像,就要在每架投影機(jī)前裝一塊偏振片。從兩架放映機(jī)投射出的光,通過偏振片后,就成了偏振光。左右兩架投影機(jī)前的偏振片的偏振化方向互相垂直,因而產(chǎn)生的兩束偏振光的偏振方向也互相垂直。??

    ????? 這兩束偏振光投射到銀幕上再反射到觀眾處,偏振光方向不改變。當(dāng)觀眾帶上偏振眼鏡后,左右兩片偏振鏡的偏振軸互相垂直并與放映鏡頭前的偏振軸一致,所以每只眼睛只看到相應(yīng)的偏振光圖象,即左眼只能看到左機(jī)映出的畫面,右眼只能看到右機(jī)映出的畫面,這樣就會(huì)像直接觀看那樣產(chǎn)生立體感覺。??

    ????? 被動(dòng)立體顯示的主要技術(shù)特征:雙倍的投影機(jī)、配置偏振光片及眼鏡、配置偏振屏幕、左右眼單獨(dú)播放的融合器。

    這種情況下osg::DisplaySettings應(yīng)設(shè)置如下:

    _displayType使用默認(rèn)值 MONITOR(監(jiān)視器),

    _stereoMode 使用默認(rèn)值 HORIZONTAL_SPLIT(水平分割)或者VERTICAL_SPLIT(垂直分割),具體使用哪種方式應(yīng)視具體的設(shè)備環(huán)境來決定,一般水平分割的情況比較多。

    _splitStereoHorizontalEyeMapping 如果使用水平分割可以設(shè)置此參數(shù)。

    _splitStereoVerticalEyeMapping? 如果使用垂直分割可以設(shè)置此參數(shù)。

    其它參數(shù)默認(rèn)值是否需要修改結(jié)合具體情況決定。

    評(píng)價(jià): 最簡(jiǎn)單的應(yīng)用就是一臺(tái)電腦+兩臺(tái)投影機(jī)的小規(guī)模場(chǎng)景應(yīng)用,不需要融合器。如果是上下2*2或3*3的投影機(jī)布局的話就需要融合器和軟件系統(tǒng)實(shí)現(xiàn)3D同步控制功能,相當(dāng)于多機(jī)立體顯示。

    Openscenegraph多機(jī)同步立體顯示

    ?

    最好是選用支持Overlap邊緣重疊的專業(yè)顯卡 + 支持邊緣融合的投影機(jī) 這樣在程序級(jí)就不需要產(chǎn)生重疊帶及對(duì)邊緣區(qū)域進(jìn)行融合處理。用硬件的解決方案簡(jiǎn)化系統(tǒng)實(shí)現(xiàn)復(fù)雜度。

    對(duì)于單機(jī)輸出多路信號(hào)的需求可以借助專業(yè)級(jí)多屏顯卡來實(shí)現(xiàn)。

    專業(yè)網(wǎng)站 :中國(guó)投影網(wǎng) http://www.ty360.com/dp/

    ?

    將多機(jī)同步與立體顯示相結(jié)合可以實(shí)現(xiàn)多機(jī)立體顯示。涉及的問題有重疊區(qū)對(duì)象調(diào)度!

    ?

    OpenscenGraph中控制swapbuffer的方法(用于多機(jī)大屏幕同步顯示機(jī)制)

    *********************************************************************
    osg多機(jī)同步swapbuffer的實(shí)現(xiàn)方式。

    osg中真正調(diào)用opengl::swapbuffer的地方在 osg::GrapicsContext::swapBuffers()中調(diào)用的。
    如果developer想干預(yù)的話 可以調(diào)用 osg::GrapicsContext::setSwapCallback(SwapCallback* rc)來設(shè)置自定義的緩存交換回調(diào)。
    自定義的回調(diào)必須調(diào)用GraphicsContext::swapBuffersImplementation()函數(shù).

    typedef std::vector<osg::GraphicsContext*> Contexts;
    osg::Viewer::getContexts(Contexts& contexts, bool onlyValid=true); 可以獲取grapicscontext的數(shù)組
    *********************************************************************

    ?

    可以將同步這部份做成exe程序(精靈程序,隱藏窗口),用消息機(jī)制分發(fā)給目標(biāo)機(jī)器的目標(biāo)窗口。也可以直接集成到creatarglobe系統(tǒng)中做為可選模塊。

    ?

    ?

    方案

    1. 在系統(tǒng)配置文件中寫入角色信息。creatarGlobe系統(tǒng)啟動(dòng)時(shí)通過讀取配置信息確定自身角色及集群中其它機(jī)器的角色,然后建立集群跨機(jī)通訊機(jī)制(網(wǎng)絡(luò)監(jiān)聽和收發(fā))。

    ?

    2. 調(diào)整初始狀態(tài)時(shí)的master和slaves的相機(jī)位置使其投影畫面在重疊區(qū)能重合在一起。借助投影機(jī)和融合器實(shí)現(xiàn)產(chǎn)生重疊區(qū)和邊緣融合功能。

    ?

    3. 立體顯示設(shè)置。根據(jù)實(shí)際需求設(shè)置osg::DisplaySettings中的參數(shù)實(shí)現(xiàn)立體效果。具體可以參考上面的openscenegragh單機(jī)立體顯示中的描述。

    ?

    4. 進(jìn)入同步機(jī)制。

    對(duì)于master,首先將自己“相機(jī)矩陣”通過網(wǎng)絡(luò)通訊分發(fā)給每個(gè)slave,然后開始渲染,渲染完畢后等待slaver的“等待翻屏指令”的到來【waitformultiobjects】,當(dāng)收到所有的“等待翻屏指令”后(每個(gè)指令對(duì)應(yīng)一個(gè)事件Event),master通過網(wǎng)絡(luò)向所有的slave發(fā)送“翻屏指令”,然后自己翻屏,重置事件信號(hào)ResetEvent。然后就是重復(fù)以上流程。

    對(duì)于slave,首先接收master發(fā)來的“相機(jī)矩陣”,根據(jù)此矩陣調(diào)整自身相機(jī)使其相對(duì)master的相機(jī)位置姿態(tài)不變。然后開始渲染,渲染完畢后向master發(fā)送 “等待翻屏指令”,然后等待master發(fā)送的“翻屏指令”事件【waitforsingleobject】,當(dāng)收到“翻屏指令”后設(shè)置翻屏事件信號(hào)Event,然后開始翻屏,重置事件信號(hào)ResetEvent。然后就是重復(fù)以上流程。

    這里的翻屏swapbuffer通過osg::GrapicsContext::setSwapCallback(SwapCallback* rc),自己定義緩存交換回調(diào)函數(shù)來實(shí)現(xiàn)。

    ?

    備注: 接收的命令最好是帶時(shí)間戳的,這樣可以保證同步的是同一幀的3D畫面,避免畫面撕裂。

    ?

    5. 系統(tǒng)退出時(shí),slave的網(wǎng)絡(luò)線程先退出然后master的網(wǎng)絡(luò)線程再退出以保證線程安全。

    ?

    6. 偽代碼:

    需要實(shí)現(xiàn)的自定義類

    CGlbGlobeSwapBufferCallback : public osg::SwapCallback

    {

    ?????? CGlbGlobeSwapBufferCallback(CGlbGlobeView* view)

    ?????? {

    ????????????? mpr_view = view;

    ?????? }???????????

    ??????

    ?????? virtual void operater ()

    ?????? {

    ????????????? .......

    ????????????? // 從view中獲取自身角色master or slaver

    ????????????? bool isMaster = mpr_view->GetRole();

    ????????????? if (isMaster)

    ????????????? {// 如果自己角色是master,做以下工作: 收集網(wǎng)絡(luò)傳來的所有slaver繪制完畢消息,然后廣播翻屏指令,翻屏

    ???????????????????? int slaverCnt = mpr_view->GetSlaverCount();

    ???????????????????? WaitForMultiObjects(...);

    ???????????????????? {// 向所有的slaver發(fā)送翻屏指令

    ??????????????????????????? for(int i = 0; i < slaverCnt; i++)

    ??????????????????????????? {

    ?????????????????????????????????? mpr_view->sendMessage(slaverIP,"drawcomplete");

    ??????????????????????????? }

    ???????????????????? }

    ???????????????????? swapBuffer();???????

    ????????????? }

    ????????????? else{// 如果自己角色是slaver,做以下工作: 通過網(wǎng)絡(luò)向master發(fā)送繪制完畢消息,等待master通過網(wǎng)絡(luò)傳來的翻屏指令,翻屏

    ???????????????????? mpr_view->sendMessage(masterIP,"drawcomplete");

    ???????????????????? WaitForSingleObject();

    ???????????????????? swapBuffer();

    ????????????? }

    ?????? }

    ?

    ?????? private:

    ????????????? glbref_ptr<CGlbGlobeView> mpr_view;

    }

    ?

    在view中要有處理TCP/IP網(wǎng)絡(luò)發(fā)送和接收的類或接口。

    ?

    CGlbClient

    {

    }

    CGlbServer

    {

    }

    ?

    ?

    設(shè)置相機(jī)矩陣由gluperspective->glufrustum

    總結(jié)

    以上是生活随笔為你收集整理的CreatarGlobe实现多机立体显示方案(初稿)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    久久99精品久久久久蜜臀 | 97成人啪啪网 | 国产最新精品视频 | 黄色99视频 | 成年人视频在线观看免费 | 国产一级片一区二区三区 | 成人h动漫精品一区二 | av中文天堂 | 在线观看免费一级片 | 欧美日韩国产一二三区 | 亚洲精品福利在线观看 | av一级在线 | 在线亚洲观看 | 97成人在线免费视频 | www一起操| 国产精品专区在线观看 | 国产性xxxx| 91免费高清视频 | 91丨九色丨蝌蚪丨对白 | 成人小视频在线观看免费 | 久草在线视频免赞 | 高清色免费 | 国产一级二级在线 | 在线看黄色的网站 | 四虎在线免费观看 | 久久久国产在线视频 | 91网在线看 | 天天色天天草天天射 | 欧美精品国产综合久久 | 免费在线观看国产精品 | www亚洲视频 | 国产精品久久 | 综合在线观看色 | 免费黄色av | 亚州精品在线视频 | 成人免费观看大片 | 在线精品视频免费播放 | 成人在线视频免费 | 日韩丝袜在线观看 | 亚洲精品国产第一综合99久久 | 综合网天天 | 美女视频黄是免费的 | 婷婷六月色 | 久章草在线 | 久久五月情影视 | 中文字幕制服丝袜av久久 | 亚洲国产中文字幕在线视频综合 | 有没有在线观看av | 日日射天天射 | 国产成人精品免费在线观看 | 久久网站最新地址 | 久久精品国产第一区二区三区 | 久久久久国产精品一区二区 | 特级毛片网站 | 中文字幕在线观看你懂的 | 中文字幕在线播放一区 | 国产在线综合视频 | 91伊人影院 | 久久99亚洲网美利坚合众国 | 黄色大全在线观看 | av福利在线免费观看 | 在线看片日韩 | 国产精品毛片久久久久久久久久99999999 | 日韩激情免费视频 | 天天操 夜夜操 | 在线成人免费 | 69精品视频在线观看 | 中文在线最新版天堂 | 日韩影视大全 | 国产一级片免费观看 | 99免费在线观看 | 欧美日韩国产在线精品 | 成年人免费在线 | 91中文字幕永久在线 | av电影在线不卡 | 精品在线一区二区三区 | 欧美不卡在线 | 日韩成片| 国产精品一区在线观看你懂的 | 欧美国产日韩一区二区三区 | 97超碰在线免费 | 精品人人人人 | 97超碰在线资源 | 久久综合久久综合久久综合 | 精品福利av | 国产成人免费网站 | 97在线观看免费高清 | 91精品爽啪蜜夜国产在线播放 | 成人影视免费看 | 91九色视频观看 | 99精品国产在热久久 | 久久99精品国产一区二区三区 | 天天射射天天 | 久久免费久久 | 国产成人免费在线 | 91视频免费看 | 久久国产精品99久久久久久进口 | av国产在线观看 | 久久超碰99 | 国产精品毛片一区二区 | 国产69精品久久app免费版 | 国产成人精品免高潮在线观看 | 久香蕉| 中国一区二区视频 | 91最新网址 | 成年人视频在线免费播放 | 三级av在线免费观看 | 久久96 | 色香蕉在线视频 | 国产亚洲一区 | 日韩一区二区三区高清免费看看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 亚洲国产中文字幕在线观看 | 超碰在线免费福利 | 天天综合网久久 | 日韩啪视频 | 一区二区三区高清 | 91九色免费视频 | 久久久免费毛片 | 国产精品美女免费 | 久久草草热国产精品直播 | 一区二区伦理 | 一区二区三区免费在线观看 | 国产精品成 | 在线视频91 | 国产小视频在线 | 91桃花视频 | 亚洲黄色app | 日本精品在线看 | 亚洲狠狠丁香婷婷综合久久久 | 91视频首页 | 国产精品二区在线观看 | 黄色在线视频网址 | 国产又粗又猛又黄 | 欧美与欧洲交xxxx免费观看 | 成人久久视频 | 日韩免费一区二区在线观看 | 日韩女同一区二区三区在线观看 | 狠狠色丁香久久婷婷综合丁香 | 亚洲在线不卡 | 久久久久久久免费观看 | 日韩精品久久中文字幕 | 国产韩国精品一区二区三区 | 亚洲1区在线 | 日韩毛片在线一区二区毛片 | 国产精品久久久久久一二三四五 | 久久久久久草 | 麻豆你懂的 | 久久不射电影网 | 视频福利在线 | 一区在线观看 | 最近日本mv字幕免费观看 | 国内毛片毛片 | 视频福利在线 | 日韩免费视频网站 | 亚洲一区二区视频在线播放 | 国产视| 中文字幕大全 | 国产精品18毛片一区二区 | 亚洲精品高清在线观看 | 日本福利视频在线 | 中文字幕色综合网 | 福利视频区| 91精品国产入口 | 狠狠色丁香婷婷综合最新地址 | 久久久国产精品一区二区中文 | 欧美一级片免费播放 | 中文字幕在线视频一区二区 | 欧美成人精品三级在线观看播放 | 九精品 | 久青草国产在线 | 欧美一二三视频 | www.国产在线| 国产一区二区免费 | 国产欧美精品xxxx另类 | 国产一级二级在线 | 成年人网站免费在线观看 | 久久国产视频网站 | 草在线视频 | 天天舔天天搞 | av网址aaa | 国产亚洲综合性久久久影院 | www.久久视频 | 国产一级片观看 | 免费三级影片 | 精品国产中文字幕 | 天堂在线一区 | 国产黄色大片 | 欧美性生交大片免网 | 精品国产乱码久久 | 右手影院亚洲欧美 | 亚洲精品午夜aaa久久久 | 日本激情视频中文字幕 | 亚洲精品国产品国语在线 | 欧美另类xxx | 亚洲精品国产综合99久久夜夜嗨 | 97电影在线看视频 | a午夜电影 | 四虎永久精品在线 | 成人av资源站 | 成年人黄色在线观看 | 九色91在线| 91麻豆精品国产91久久久更新时间 | 操操操日日日干干干 | 色婷婷 亚洲 | 久久精品9 | 99久久精品免费看国产免费软件 | 丁香激情综合国产 | 欧美日韩精品免费观看 | 日日碰狠狠添天天爽超碰97久久 | 国产精品视频永久免费播放 | 国产九九精品 | 欧美日韩另类在线观看 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 玖玖在线资源 | 五月婷婷一区 | 久久手机免费视频 | 亚洲第一av在线播放 | 国产视频1| 黄色av网站在线观看免费 | 日韩在线免费电影 | 黄色av播放 | 三级性生活视频 | 成人av免费播放 | 婷婷色六月天 | 日韩免费网站 | www.久艹 | 伊人婷婷综合 | 亚洲精品一区二区三区四区高清 | 国产精品久久久久久久久久久久久久 | 国产日韩欧美视频在线观看 | 亚洲色图27p | 国产三级视频 | 国产日产精品一区二区三区四区 | wwwwww黄| 久久www免费人成看片高清 | 亚洲伊人第一页 | 91成人免费 | 久久成人免费 | 久久久久一区二区三区 | 国产亚洲精品久久久久动 | 99久久久| 亚洲黄色在线观看 | 在线成人一区 | 91福利在线导航 | 97在线观 | 国产高清在线免费视频 | 国产区网址 | 波多野结衣电影一区二区三区 | 国产精品久久久久av福利动漫 | 国产一级特黄毛片在线毛片 | 成人动漫精品一区二区 | 香蕉国产91 | 99久在线精品99re8热视频 | 国产欧美在线一区 | 国产中的精品av小宝探花 | 激情视频一区二区三区 | 久久 亚洲视频 | 亚洲综合在线视频 | 狠狠狠色狠狠色综合 | 久久不见久久见免费影院 | 免费看的黄色网 | 久久免费国产精品 | 国产在线更新 | 亚洲综合色丁香婷婷六月图片 | 国产精品久久久久久久久久东京 | 香蕉97视频观看在线观看 | 天天干 天天摸 天天操 | 久久精品美女视频 | 国产精品 中文字幕 亚洲 欧美 | 国产特黄色片 | 96av视频| 亚洲 欧美 精品 | 人人看97 | 久久精品人人做人人综合老师 | 久久久久久久久久久免费 | 色a网| 国产日产精品一区二区三区四区的观看方式 | 天天干天天操天天入 | 69国产盗摄一区二区三区五区 | 亚州黄色一级 | 久久视讯| 国产在线999 | 国产中的精品av小宝探花 | 国产精品国产三级国产aⅴ无密码 | 99精品视频免费在线观看 | 久久精品99视频 | 在线a视频免费观看 | 九九有精品 | 毛片网免费 | 国产特级毛片aaaaaaa高清 | 久久久久北条麻妃免费看 | 狠狠久久婷婷 | 五月天六月丁香 | 欧美精品久久久久久久久久 | 超碰成人av| 免费日韩视 | 色婷婷综合久色 | 91大神在线看 | 亚洲福利精品 | 国产精品久久久久一区二区国产 | 一区二区中文字幕在线播放 | 99久久www| 激情一区二区三区欧美 | 精品国产观看 | a级国产乱理伦片在线观看 亚洲3级 | 青春草免费视频 | 国产精品区一区 | 丝袜美腿亚洲 | 少妇性bbb搡bbb爽爽爽欧美 | 国产美女主播精品一区二区三区 | 国内精品久久久 | 久久婷婷国产色一区二区三区 | 日韩特级黄色片 | 国产精品欧美久久久久无广告 | 久草在线在线 | 国产精品国内免费一区二区三区 | 99精品免费久久久久久久久日本 | 国产精品毛片一区视频播不卡 | 免费看在线看www777 | 精品国产福利在线 | 欧美在线观看小视频 | 欧美一级片免费在线观看 | 色视频在线看 | 91热这里只有精品 | 香蕉视频网址 | 免费日韩一区二区三区 | 日韩在线免费视频 | 91亚洲视频在线观看 | 精品久久久免费视频 | 国产探花视频在线播放 | 香蕉视频在线观看免费 | 免费黄色在线网址 | 中文字幕电影高清在线观看 | 激情欧美网 | 久草视频在线免费播放 | 人人干人人添 | 精品一区二区在线免费观看 | 欧美美女激情18p | av片中文| 综合精品在线 | 在线观看视频一区二区三区 | 国产精品视频永久免费播放 | 日本黄色免费在线 | 蜜桃av久久久亚洲精品 | 亚洲高清不卡av | 欧美 日韩 国产 中文字幕 | 国产中文字幕一区二区三区 | 成人一级免费电影 | 国内精品久久影院 | 国产在线精品福利 | 综合黄色网 | 免费日韩av片 | 丁香六月天婷婷 | 成人aⅴ视频 | 日韩视频在线一区 | 9热精品| 天天做日日做天天爽视频免费 | 狠狠综合久久 | 成人av一区二区兰花在线播放 | 激情大尺度视频 | 欧美成人影音 | 国产一级在线观看 | 91片在线观看 | 黄色1级毛片 | 天天av综合网 | 天堂av在线网址 | 日本护士三级少妇三级999 | 欧美日韩国产一区二区在线观看 | 91在线视频免费91 | 亚洲精品合集 | 日韩a在线观看 | 精品免费久久久久久 | 成人av在线看 | 国产福利91精品一区 | 狠狠狠色狠狠色综合 | 欧美日韩亚洲第一页 | 久久一区二区三区国产精品 | 丁香九月婷婷 | 91av小视频 | 不卡国产视频 | 成人黄在线观看 | 免费av网站在线看 | av免费看在线 | 欧美精品成人在线 | 五月天天色 | 奇米先锋 | 色偷偷888欧美精品久久久 | 九九热精品视频在线观看 | 激情五月播播久久久精品 | 深爱激情开心 | 香蕉视频亚洲 | 97电影网手机版 | 超碰夜夜 | 国产精品一区二区免费看 | 久久看免费视频 | 亚洲区精品| 久久中文字幕导航 | 欧美伦理一区 | 国产日韩欧美在线免费观看 | aaaaaa毛片| 久久九九国产视频 | 亚洲精品黄色片 | 久久九九免费 | 伊人国产在线观看 | 免费电影播放 | 青青河边草观看完整版高清 | 久久久亚洲网站 | 在线观看成人毛片 | 少妇18xxxx性xxxx片 | av短片在线 | 国产99色 | 日韩欧三级 | 99热精品免费观看 | 免费观看一级特黄欧美大片 | 成人福利在线观看 | 久久99热久久99精品 | www.久久久久 | 亚洲成人一二三 | 麻豆视频免费看 | 日日麻批40分钟视频免费观看 | 免费99精品国产自在在线 | 国内视频在线观看 | 成 人 黄 色视频免费播放 | 欧美人zozo | 中文字幕亚洲高清 | 久久精品视频免费观看 | 久久九精品 | 综合网天天射 | 五月色综合 | 久久免费看av | 国产成人精品国内自产拍免费看 | 成人app在线播放 | 一级黄视频 | 久草国产在线观看 | 色香com. | 久草在线免费在线观看 | 日韩精品中文字幕在线播放 | 久久综合丁香 | 亚洲在线视频免费观看 | 一区二区视频电影在线观看 | 丁香婷婷激情啪啪 | 国产精品黄色在线观看 | 日韩欧美91| 欧美日韩不卡一区二区三区 | 免费在线看v | 国产一级在线播放 | 天天天干夜夜夜操 | 成人黄性视频 | 亚洲精品视频国产 | 九九热视频在线播放 | 欧洲亚洲国产视频 | 国产精品电影在线 | 天堂va在线高清一区 | 在线观看午夜 | 亚洲欧洲成人精品av97 | 国产99爱 | 麻豆视频免费看 | 91看片黄色 | 一级片色播影院 | 国产精品av免费在线观看 | 午夜国产一区 | 午夜久久视频 | 国产伦精品一区二区三区无广告 | 四虎最新入口 | 日韩成人xxxx| 亚洲激情视频在线 | 亚洲免费av在线播放 | 婷婷国产一区二区三区 | 久久精品亚洲一区二区三区观看模式 | 一级黄色电影网站 | 日韩欧美v | 中文字幕av电影下载 | 亚洲综合黄色 | 亚洲精品66 | 999ZYZ玖玖资源站永久 | 国产va饥渴难耐女保洁员在线观看 | 日韩成人精品在线观看 | 91在线免费观看国产 | 99久久99久久免费精品蜜臀 | 日韩两性视频 | 免费高清国产 | 色偷偷97 | 亚洲第一av在线播放 | 中文字幕永久 | 精品亚洲成人 | 久草资源免费 | 特级片免费看 | 国产九色在线播放九色 | 黄网站app在线观看免费视频 | 久久夜色精品国产欧美一区麻豆 | 在线国产日韩 | 日韩精品在线观看视频 | 日韩有码第一页 | 久久综合之合合综合久久 | 久久久久久久久久久高潮一区二区 | 欧美一区二区三区免费看 | 最新国产精品视频 | 欧美午夜久久 | 亚洲国产精品99久久久久久久久 | 日韩免费观看av | 999在线视频 | 午夜影视一区 | 欧美精品久久久久久久久久白贞 | 视频在线观看国产 | av在线播放网址 | 丁香花在线视频观看免费 | 成人97视频 | 一区二区三区韩国免费中文网站 | 欧美精品久久久久久久亚洲调教 | 99久久久久免费精品国产 | 久香蕉 | 日韩电影中文,亚洲精品乱码 | 色视频网站免费观看 | 日韩欧美99| wwwwww色 | 人人爽人人香蕉 | 激情久久一区二区三区 | 亚洲资源在线观看 | 亚洲免费公开视频 | 一级黄色片在线免费看 | 日韩特级片| 伊人狠狠干 | 久操中文字幕在线观看 | 免费又黄又爽视频 | 99精品在线视频播放 | 欧美精品二 | 天天干天天天天 | 狠狠操.com| 久久久黄视频 | 国产精品久久久 | 激情久久婷婷 | 国产黄色视 | 免费色视频网址 | 在线观看久久 | 99精品视频精品精品视频 | 一区二区三区在线观看免费视频 | 五月天久久激情 | 91麻豆看国产在线紧急地址 | www.狠狠操.com | 国产在线久草 | 亚洲天堂网视频 | 九色精品免费永久在线 | 高清色免费 | 狠狠久久综合 | 亚洲精品国产精品国自产 | 成人亚洲欧美 | 国产精品 日韩 | 在线观看黄色的网站 | 999久久国精品免费观看网站 | 亚洲不卡在线 | 成人午夜剧场在线观看 | 欧美一性一交一乱 | 亚洲成人资源在线观看 | 久久久久9999亚洲精品 | 欧美精品亚洲精品 | 国产精品久久久区三区天天噜 | 亚洲一区视频在线播放 | 成 人 黄 色 免费播放 | 视频一区在线免费观看 | japanesexxxhd奶水 91在线精品一区二区 | 中文字幕在线观看日本 | 久久久黄视频 | 久久久网址 | 中文免费在线观看 | 婷婷在线观看视频 | 97超碰人人澡人人爱 | 超碰97在线看 | 欧美疯狂性受xxxxx另类 | 99热精品在线 | 欧美一区二区在线 | www.av在线.com| 日韩理论 | 中文字幕国语官网在线视频 | 久久免费美女视频 | av大片免费| 亚洲激情在线观看 | 国产香蕉视频在线播放 | 天天操人人干 | 97超碰精品| 国产精品白丝jk白祙 | 日韩成人不卡 | 日韩视频中文字幕 | 日韩在线不卡视频 | 亚洲资源在线 | 玖玖在线视频观看 | 国产精品久久久久永久免费 | 超碰97国产精品人人cao | 在线观看日韩免费视频 | 国产色视频一区 | av成人免费观看 | 丁香激情婷婷 | 精品久久国产精品 | 日韩在线高清免费视频 | 一本之道乱码区 | 免费亚洲片 | 亚洲一区精品二人人爽久久 | 国产一区免费观看 | 午夜久久久久久久久 | 精品在线一区二区三区 | 日韩网站一区二区 | 国产精品成人一区二区三区 | 免费在线| 不卡的一区二区三区 | 久久精品精品电影网 | 国产亚洲aⅴaaaaaa毛片 | 西西44人体做爰大胆视频 | 热久久这里只有精品 | 久久综合中文字幕 | 欧美日韩免费观看一区=区三区 | 亚洲精品 在线视频 | 亚洲欧美国产精品18p | 麻花豆传媒一二三产区 | 丝袜网站在线观看 | 丝袜精品视频 | 四虎影视精品永久在线观看 | 在线精品视频免费播放 | 美女在线免费视频 | 久久成年人网站 | 中文字幕国产精品一区二区 | 国产午夜精品在线 | 国产又粗又猛又黄又爽 | 综合激情av | 久久久精品高清 | 黄色高清视频在线观看 | 日本中文字幕电影在线免费观看 | 久久婷婷国产色一区二区三区 | 久久九九影视网 | 亚洲影院天堂 | 久久亚洲福利 | 五月天九九| 在线观看av免费观看 | 一区 二区 精品 | 美女性爽视频国产免费app | 久久精品国产亚洲a | 成人手机在线视频 | 高清一区二区三区 | 日韩v欧美v日本v亚洲v国产v | 精品福利视频在线观看 | 91av在线播放| 97小视频| 成人影片在线播放 | 久久午夜羞羞影院 | 久久夜色精品国产欧美乱极品 | 成人黄色小说网 | 黄网站色 | 色综合天天射 | 国产精品成| 四虎影院在线观看av | 99se视频在线观看 | 国产精品99久久久久久武松影视 | 超碰97免费在线 | 久艹视频在线免费观看 | 国产99久久久欧美黑人 | 国产91在线免费视频 | 成人精品一区二区三区中文字幕 | 精品欧美乱码久久久久久 | 四虎在线视频免费观看 | 久久手机免费视频 | 日韩中文字幕免费在线播放 | 日韩中文字幕视频在线观看 | 久久99深爱久久99精品 | 69久久久 | 久草久草久草久草 | 香蕉影视在线观看 | 亚洲欧洲精品一区 | 免费在线国产视频 | 亚洲春色综合另类校园电影 | 日韩av播放在线 | 国产精品一区二区久久精品爱涩 | 午夜色站 | 精品一区二区亚洲 | 9999免费视频 | 欧美 日韩 性 | 伊人超碰在线 | 免费看的黄色小视频 | 麻豆手机在线 | www一起操 | 深爱婷婷久久综合 | 色综合天天狠天天透天天伊人 | 97精产国品一二三产区在线 | 亚洲色图色 | 97色se| 久久久麻豆精品一区二区 | 999久久久免费精品国产 | 成人av电影免费在线观看 | 国产情侣一区 | h视频日本 | 91大神精品视频在线观看 | 国产黄色片免费在线观看 | 亚洲视频 中文字幕 | 成人蜜桃视频 | 中文字幕在线观看网址 | 欧美一级性视频 | 国产色小视频 | 日本在线精品视频 | 婷婷激情五月 | 91av久久| 国产在线国偷精品产拍免费yy | 亚洲精品一区二区三区新线路 | 久久综合狠狠综合久久狠狠色综合 | 九九热在线免费观看 | 久久伊人五月天 | 亚洲成免费 | 91免费视频网站在线观看 | 久久99热这里只有精品国产 | 久久99久久久久久 | 亚洲aⅴ乱码精品成人区 | 久久婷婷色 | 国产在线观看91 | 国产主播大尺度精品福利免费 | 亚洲一级二级三级 | 天海冀一区二区三区 | 在线成人免费电影 | 国产色婷婷在线 | 在线观看免费高清视频大全追剧 | 91网页版免费观看 | av电影在线免费观看 | 丰满少妇在线观看 | av丝袜在线 | 2023av在线| 人人澡人人爱 | 国产黄大片在线观看 | 一区二区三区四区免费视频 | 亚洲人人精品 | 成人av资源网站 | 国产v在线播放 | 日韩二区三区在线 | 国产精品一区二区免费 | 免费能看的av | 国产精品嫩草影视久久久 | 91精品在线观看入口 | 成人羞羞视频在线观看免费 | 午夜久久影院 | 中文字幕乱在线伦视频中文字幕乱码在线 | 九九九在线观看 | 精品国内 | 98久9在线 | 免费 | 国产成人一区二区三区久久精品 | 国产不卡高清 | 国产精品久久久久久久久久免费 | 日韩免费成人 | 精品久久久久久久久久久久 | 欧美高清成人 | 97福利在线观看 | 成人精品福利 | 美女免费网站 | 制服丝袜欧美 | 五月天堂色 | 日韩欧美精品一区二区三区经典 | 久久精品免费观看 | 国产专区在线看 | 人人爽人人爽人人片av免 | 国产在线精品二区 | 色综合激情网 | 国产色在线视频 | 日韩一区精品 | 天天色天天干天天色 | 国产区网址 | 97精品欧美91久久久久久 | 国产美女精品在线 | 亚洲国产成人精品在线 | 久久视频免费 | 激情视频国产 | 五月天综合在线 | 亚洲精品久久久久中文字幕二区 | 在线国产中文字幕 | 福利视频午夜 | 欧美精品一区二区免费 | 亚洲综合在线一区二区三区 | 欧美专区亚洲专区 | av经典在线 | 精品久久久久一区二区国产 | 国产精品福利无圣光在线一区 | 国产高清精品在线 | 色婷婷在线视频 | 国产拍揄自揄精品视频麻豆 | 在线播放91| 91色一区二区三区 | 日韩精品一区二区三区在线视频 | 久久99国产精品久久 | 亚洲成人资源在线 | 欧美激情视频一区二区三区免费 | 精品国产aⅴ麻豆 | 狠狠色丁香婷婷综合久小说久 | 国产区精品在线观看 | 国产在线国偷精品产拍免费yy | 成人av一二三区 | 国产精品入口a级 | 天天摸天天舔 | 天天干天天看 | 亚洲精品66 | 免费影视大全推荐 | 欧美成人xxxxx | 91超碰在线播放 | 一区二区三区四区精品 | 特级西西www44高清大胆图片 | 国产精品都在这里 | 欧美一级在线看 | 最近中文字幕在线 | 亚洲 综合 精品 | 国内精品久久久久久久久久清纯 | 狠狠狠色丁香婷婷综合激情 | 99久久99久久精品国产片 | 久久久久久久久毛片精品 | 免费在线观看成年人视频 | 国产明星视频三级a三级点| 久久超| 久久日本视频 | 免费视频久久久 | 欧美国产亚洲精品久久久8v | 日韩特级片 | 亚洲女同videos | 成人在线视频免费观看 | 日韩三级免费 | 2021av在线| 久久99国产综合精品免费 | 国产主播大尺度精品福利免费 | 久久久www成人免费毛片麻豆 | 欧美日韩电影在线播放 | 日韩a级黄色 | 亚洲日韩中文字幕 | 日韩免费看视频 | 99色在线观看 | 国产精品成久久久久三级 | 天天做天天看 | 日日爱av| 国产不卡精品 | 久久久久久久看片 | 国产在线色 | 天天色综合天天 | 麻豆视频www | 在线国产99 | a级国产毛片 | 香蕉视频在线免费 | 99精品视频在线观看视频 | 亚洲精品视频在线观看免费 | 91精品久久久久久久久 | wwwwwww色| 一区二区三区手机在线观看 | 中文字幕久久网 | 久草在线综合网 | 欧美日韩国产精品久久 | 免费看成人片 | 波多野结衣日韩 | 97精品国产一二三产区 | 中文字幕人成不卡一区 | 97视频网站 | 一区二区三区三区在线 | 久久免费高清视频 | 狠狠狠狠狠狠狠狠干 | av在线免费网站 | 精品国产伦一区二区三区观看方式 | 麻豆91视频 | 久久久影视 | 伊人狠狠 | 人人玩人人爽 | 欧美精品国产综合久久 | 一区视频在线 | 免费在线观看污网站 | 国产精品免费视频久久久 | 天天爽天天碰狠狠添 | 91人人揉日日捏人人看 | 国产免费一区二区三区最新 | 97福利在线 | 激情欧美日韩一区二区 | 国内精品久久久久久久久 | 少妇搡bbbb搡bbb搡69 | 久久精品一区八戒影视 | 中文国产成人精品久久一 | 91九色蝌蚪视频网站 | 久久国产精品成人免费浪潮 | 久久精品毛片基地 | 亚洲经典视频在线观看 | 亚洲精品女人久久久 | 国产精品嫩草影院9 | 国产精品6999成人免费视频 | 成人黄大片 | 六月激情婷婷 | 亚洲精品久久久蜜桃 | 色婷婷成人网 | 日韩成人免费在线电影 | 亚洲免费精品一区二区 | 成人免费观看完整版电影 | 日韩在线色视频 | 国产高清av在线播放 | 精品国产一区二区三区四区在线观看 | 色狠狠干| 亚洲国产免费网站 | 欧美成人h版在线观看 | 99免费看片 | 国产99在线免费 | 国产福利精品在线观看 | 日韩av电影中文字幕在线观看 | 久草在线视频看看 | 久久爱资源网 | 欧美在线1区 | 黄色三级网站在线观看 | 最新中文在线视频 | 国产黄色精品视频 | 婷婷六月中文字幕 | 欧美一级久久久久 | 黄色大片网 | 天天射天天干天天爽 | av大片免费在线观看 | 高潮久久久 | 亚洲欧洲国产精品 | 五月婷综合网 | 国产日韩一区在线 | 亚洲欧洲日韩在线观看 | 日韩免费高清 | 久草在线视频免赞 | 在线观看视频三级 | 成人超碰在线 | 国产精品久久一区二区三区不卡 | 国产亚洲小视频 | 精品久久一区二区三区 | 不卡精品 | 婷婷综合伊人 | 中文字幕 第二区 | 国产日产精品久久久久快鸭 | 欧美极品xxxx| 亚洲乱码国产乱码精品天美传媒 | 免费视频久久久 | 99久久er热在这里只有精品15 | 国产高清免费在线播放 | 国产小视频免费观看 | 成人看片 | 97日日 | 久久草在线免费 | 免费成人黄色av | 午夜久久影视 | 精品视频一区在线 | 婷婷丁香视频 | 欧美综合国产 | 亚洲精品玖玖玖av在线看 | 欧美日韩xx | 欧美在线视频第一页 | 色综合天天色综合 | 深夜精品福利 | 伊人国产在线播放 | 天天天天爱天天躁 | 天天爱天天舔 | 99视频网站 | 91麻豆精品国产自产 | www.久久婷婷 | 精品1区2区3区 | 成人一级片在线观看 | 国产成人精品亚洲日本在线观看 | 精品国产观看 | 国产成人精品亚洲a | 天天操天天操天天操天天操 | 91天天操| 99这里只有精品99 | 美女视频永久黄网站免费观看国产 | 97精产国品一二三产区在线 | av免费网站观看 | 国产精品91一区 | 97超碰人人澡 | 亚洲一级电影 | 韩日电影在线 | 久久在线视频在线 | 伊人中文字幕在线 | 91九色免费视频 | 在线视频日韩一区 | 欧美日韩免费视频 | 91精品对白一区国产伦 | 国产精品成人一区二区三区吃奶 | 激情五月在线 | 91亚洲国产成人 | 九九免费精品 | 婷婷色综 | 人人网人人爽 | 国产在线一区观看 | av成人在线看 | 亚洲精品一区二区久 | 日韩免费观看一区二区三区 | 97日日碰人人模人人澡分享吧 | 色狠狠综合 | 99热精品免费观看 | 久久免费视频1 | 欧美亚洲久久 | 操操碰| 91av在线精品 | 五月天综合网站 | 国产精品视频一二三 | 国产精品久久 | 美女免费黄网站 | 亚洲波多野结衣 | 九九热在线观看 | 成人午夜性影院 | 中文字幕在线观看视频网站 | 激情网五月 | 免费在线色电影 | 久久av一区二区三区亚洲 | 在线视频成人 | 免费视频18| 成人网页在线免费观看 |