青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

根據(jù)我對msvc系列和mingw編譯器的了解
具體差異如下:
1.在編譯源文件過程中,2者對涉及的相關(guān)頭文件有所不同
比如:
#ifdef G_MSVC
#include 
<GEngine/Template/Vector.hpp>
#endif 
這是蓋莫引擎中math.hpp包含的頭文件
其中有一個函數(shù):
    ////////////////////////////////////////////////////////
    
/// 給定差量t(0<=t<=1)獲取線性插值點p(0) = p1,p(1) = p2
    //////////////////////////////////////////////////////// 
    template<class T>
    
static Vector3<T> GetPoint(const Vector3<T> &from,const Vector3<T> &to,float t);
在編譯的Math的時候MinGW需要先"編譯"Vector文件
2.2者在處理函數(shù)返回值上的不同
比如:
int GetValue()
{
}
msvc需要顯式的給定函數(shù)返回值
而mingw不需要(具有默認(rèn)值)
3.對待函數(shù)參數(shù)的不同
比如
template<class T>
void Add(T a,T a);
4.基本數(shù)據(jù)結(jié)構(gòu)類型有所不同
5.在獲取原始數(shù)據(jù)上的區(qū)別如下:
const int     MAXINT    = std::numeric_limits<int>::max;
const double  MAXDOUBLE = (std::numeric_limits<double>::max)();
6.其他請大家補充吧
posted @ 2010-06-26 18:57 ccsdu2009 閱讀(2677) | 評論 (8)編輯 收藏
 
     摘要: 這是最新設(shè)計的蓋莫音頻音頻(API)(c++)(1.5.5)當(dāng)前提供一個簡易版本的播放器(使用了Skinse界面庫)界面如下:當(dāng)前提供的功能如下:蓋莫音頻API1.5.5 功能更為強勁蓋莫音頻引擎(API) 是使用標(biāo)準(zhǔn)c++寫的音頻播放軟件支持devc++,codeblock,vc6,vc7.1,vc8.,vc9編譯器平臺支持xp,vista,win7 當(dāng)前支持ogg,mp3,wav,au,aif...  閱讀全文
posted @ 2010-06-24 19:57 ccsdu2009 閱讀(2105) | 評論 (6)編輯 收藏
 
這是剛改動的蓋莫游戲引擎-UI小圖
可以看出
好看了很多

具體的做法就是每一個控件對象都有一個對于的渲染描述符
包含控件邊框和控件背景

當(dāng)然只有改動控件的描述配置就可以改變控件的外觀了(典型的裝飾器啊)

具體小圖如下:

1.


下一步我并不打算加入更多的控件(控件很多?)
還是先做做UI編輯器吧
提高一下生產(chǎn)率吧

posted @ 2010-06-24 14:51 ccsdu2009 閱讀(1570) | 評論 (4)編輯 收藏
 
本著簡單,易用的設(shè)計原則
我給蓋莫引擎加入了一個簡單的插件系統(tǒng)
插件基類如下:
class Plugin : public virtual RefCount 
{
public:
    
virtual ~Plugin(){}
    
virtual PLUGIN_FORMAT GetFormat()const  = 0;
    
virtual engine_string GetMaker()const = 0;
    
virtual engine_string GetDescription()const = 0;
    
virtual void  GetVersion(int &main,int &sub,int &pitch) = 0;
private:    
    
virtual bool Init(void* data) = 0;
    
virtual void Deinit(void* data) = 0;
    friend 
class PluginFactory;
};

可以看出基本的插件方法有獲取插件格式,插件作者,插件描述,插件版本等
下面的是簡單的插件工廠
////////////////////////////////////////////////////////////
/// 定義引擎插件工廠(管理器)
////////////////////////////////////////////////////////////
class GAPI PluginFactory : public Singleton<PluginFactory>
{
public:
    
bool RegisterPlugin(Plugin* plugin);
    
void UnRegisterPlugin(Plugin* plugin);
};
這是一個簡單的單件
它只有2個函數(shù)注冊和反注冊插件
使用的時候只要獲取插件指針
然后傳入插件工廠注冊之后即可使用
(注冊的本質(zhì)就是根據(jù)插件類型設(shè)置必要的插件上下文數(shù)據(jù))

這種插件方法有它的弊端 不過在我看來最大的好處就是簡單咯

下面是簡單的視頻播放插件咯
////////////////////////////////////////////////////////////
/// 定義引擎視頻播放器(全局唯一)
////////////////////////////////////////////////////////////
class VideoPlayer : public Plugin
{
public
    
///////////////////////////////////////////////////////
    
/// 構(gòu)造,析構(gòu)視頻播放器
    
///////////////////////////////////////////////////////
    VideoPlayer(){}
    
virtual ~VideoPlayer(){}
       
///////////////////////////////////////////////////////
    
/// 播放指定視頻
    
///////////////////////////////////////////////////////
    virtual bool Play(const engine_string& video) = 0
    
    
///////////////////////////////////////////////////////
    
/// 視頻更新每幀調(diào)用 
    
///////////////////////////////////////////////////////    
    virtual bool Update() = 0
    
    
///////////////////////////////////////////////////////
    
/// 停止并卸載視頻
    
///////////////////////////////////////////////////////
    virtual void Stop() = 0
    
    
///////////////////////////////////////////////////////
    
/// 獲取,設(shè)置視頻當(dāng)前音量(0-1)
    
///////////////////////////////////////////////////////    
    virtual float GetVolume()const = 0
    
virtual void  SetVolume(float volume) = 0;
};

posted @ 2010-06-23 14:10 ccsdu2009 閱讀(1570) | 評論 (0)編輯 收藏
 
1.先說下Ui的input部分
在GUI部分輸入輸出通常是需要采用回調(diào)函數(shù)來處理的
比如:

void G_CALL MousePosCallBack(int x,int y)
{
    UIWidgetManager::Instance().OnMouseMove(x, y);
}
所以我就先給引擎的Input部分加入了幾個輸入輸出回調(diào)函數(shù)以方便使用

2.然后上幾個UI小圖

當(dāng)鼠標(biāo)劃過按鈕時:
.

相關(guān)的代碼:
void RenderGUI();

RefPtr
<Device> device;
RefPtr
<Input>  input;
Panel 
*panel = NULL; 
ProgressBar 
*progressbar = NULL;
Button 
*button1 = NULL;
Button 
*button2 = NULL;
Button 
*button3 = NULL;
Button 
*button4 = NULL; 
 
void G_CALL MouseStateCallBack(int mouse,int action)
{
    
int x,y;
    input
->GetMousePosition(x,y); 
    
if(action == KEY_PRESS && mouse == MOUSE_BUTTON_LEFT)
    
{
        UIWidgetManager::Instance().OnLeftButtonDown(x,y);          
    }

    
else if(action == KEY_PRESS && mouse == MOUSE_BUTTON_RIGHT)
    
{
        UIWidgetManager::Instance().OnRightButtonDown(x,y);  
    }

    
else if(action == KEY_RELEASE && mouse == MOUSE_BUTTON_LEFT)
    
{
        UIWidgetManager::Instance().OnLeftButtonUp(x,y); 
    }

    
else if(action == KEY_RELEASE && mouse == MOUSE_BUTTON_RIGHT)
    
{
        UIWidgetManager::Instance().OnRightButtonUp(x,y);    
    }

}


void G_CALL MousePosCallBack(int x,int y)
{
    UIWidgetManager::Instance().OnMouseMove(x, y);
}

 
bool G_CALL IsShiftPressed()
{
    
return false;
}


bool G_CALL IsAltPressed()
{
    
return false;
}


bool G_CALL IsCtrlPressed()
{
    
return false
}
 

void SettingPanel();

int main()
{
    device 
= InitDevice("UI測試1");
    input 
= device->GetInput();
    input
->AttachMouseState(&MouseStateCallBack);
    input
->AttachMousePos(&MousePosCallBack);
    core::TextDesc::SetDefaultFont(engine_string(
"simhei.ttf"));
    
    UIWidgetManager::Instance().Initialize(
&IsShiftPressed,&IsAltPressed,&IsCtrlPressed);
    UIWidgetManager::Instance().AppResized(
640,480);
    SettingPanel();
    BEGIN_LOOP(device)
       glClearColor(
0.1,0.1,0.2,1.0f);
       glClear( GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT );   
       RenderGUI();    
    END_LOOP(device)
    
    
return 0;
}


void SettingPanel()
{
    panel 
= new Panel(Rectf(10,75,180,180),NULL);
    
    button1 
= new Button(panel,L"寮€濮嬫父鎴?);
    button2 = new Button(panel,L"淇濆瓨娓告垙");
    button3 
= new Button(panel,L"杞藉叆娓告垙");
    button4 
= new Button(panel,L"閫€鍑烘父鎴?);
    progressbar = new ProgressBar(panel,Rectf(150,90,40,220),UI_DIRECTION_VERTICAL);
    progressbar
->SetPercentage(65.0f);
      
    panel
->AddChildWidget(button1);
    panel
->AddChildWidget(button2);
    panel
->AddChildWidget(button3);
    panel
->AddChildWidget(button4);
 
    panel
->AddChildWidget(progressbar);
    
    button1
->SetSize(Vector2f(120,40));
    button2
->SetSize(Vector2f(120,40));
    button3
->SetSize(Vector2f(120,40));
    button4
->SetSize(Vector2f(120,40));
    button1
->SetPosition(Vector2f(20,90));
    button2
->SetPosition(Vector2f(20,150));
    button3
->SetPosition(Vector2f(20,210));
    button4
->SetPosition(Vector2f(20,270));  
    
    UIWidgetManager::Instance().AddWidget(panel);      
}


void RenderGUI()
{
    
float precent = progressbar->GetPercentage();
    precent 
+= 1.0f;
    
if(precent >= 100.0f)
        precent 
= 0.0f;
    progressbar
->SetPercentage(precent);    
    UIWidgetManager::Instance().Update();      
}




對于UI部分基本上所有的常見器件都需要一個一個設(shè)計
一次性做完太難了
而且設(shè)計的不好就需要重新設(shè)計
所以我決定先設(shè)計以下幾個器件 Widget,Panel,StaticText,SliderBar
其余的等把基本框架做成熟了再做吧
posted @ 2010-06-19 17:57 ccsdu2009 閱讀(1506) | 評論 (1)編輯 收藏
 
當(dāng)前引擎基本框架功能都已經(jīng)完備了
接下來的開發(fā)將不再強調(diào)功能上的大而全
想強調(diào)精致,易用性

將優(yōu)先考慮虛擬仿真上的易用喔


posted @ 2010-06-16 17:27 ccsdu2009 閱讀(287) | 評論 (0)編輯 收藏
 
當(dāng)前在做引擎的GUI部分
設(shè)計的的首要原則是先做出來,如果有什么問題以后再改

當(dāng)然GUI消息事件是這樣設(shè)計的
事件和聽者是2個模板
///////////////////////////////////////////////////////////
/// 定義引擎事件基類模板
///////////////////////////////////////////////////////////
template<class EventType = int>
class Event : NonCopyable
{
public:
    
///////////////////////////////////////////////////////
    
/// 事件基類構(gòu)造函數(shù)
    
///////////////////////////////////////////////////////
    Event(const EventType& type):type_(type){}    
    
    
////////////////////////////////////////////////////////
    
/// 事件基類析構(gòu)函數(shù)
    
////////////////////////////////////////////////////////
    virtual ~Event(){}
    
    
////////////////////////////////////////////////////////
    
/// 獲取事件類型
    
////////////////////////////////////////////////////////
    EventType GetEventType()const{return type_;}
private:
    
////////////////////////////////////////////////////////
    
/// 數(shù)據(jù)成員變量
    
////////////////////////////////////////////////////////
    EventType type_;    
};

////////////////////////////////////////////////////////////
/// 定義事件聽者基類 
////////////////////////////////////////////////////////////
template<class Event,class Object>
class EventListener
{    
public
    
    
////////////////////////////////////////////////////////
    
/// 事件聽者虛析構(gòu)函數(shù)
    
////////////////////////////////////////////////////////
    virtual ~EventListener(){}
    
    
////////////////////////////////////////////////////////
    
/// 消息派送
    
////////////////////////////////////////////////////////
    virtual bool Dispatch(const Event& message,Object* object= 0
};

可以看出這并不屬于GUI部分
在GUI中有
typedef Event<UI_EVENT> UIEvent; 
typedef EventListener
<UIEvent,Widget> UIEventListener; 

每一個控件可能都需要處理消息
所以控件有一個函數(shù)
    ////////////////////////////////////////////////////////
    
/// 消息處理
    
////////////////////////////////////////////////////////
    virtual bool Process(const UIEvent& event);


來響應(yīng)消息事件


基本的GUI事件有2類 一個是鼠標(biāo)事件 一個是按鍵事件
所有有2個對象
class KeyEvent
class MouseEvent
對于鼠標(biāo)還有幾個派生的對象比如雙擊事件等

控件需要處理UI事件那么在GUI的某個部分需要生成UI事件
當(dāng)然事件的生產(chǎn)在UIWidgetManager中
啟用管理器的事件載入Input指針參數(shù)
然后不斷檢查鼠標(biāo)和按鍵狀態(tài)生成相關(guān)事件然后傳遞給相關(guān)控件

我認(rèn)為GUI設(shè)計有點難度
但是相對來說GUI編輯器應(yīng)該更難
小注:理想的編輯器應(yīng)該是這樣
通過編輯器生成控件配置文件(比如xml)
使用的時候只需要調(diào)用配置文件動態(tài)生成對等的控件,當(dāng)然包含事件處理嘍

最后上一個半成品的圖圖

(cppblog似乎對firefox兼容不好?)

下一篇說控件Surface和Border部分
posted @ 2010-06-08 18:48 ccsdu2009 閱讀(1802) | 評論 (9)編輯 收藏
 
也許你在使用c++的時候會出現(xiàn)問題:has no member named '...'
意思就是類沒有成員變量XXA
實際上類是具有成員變量XX的
問題的原因在于工程中定義的變量和系統(tǒng)頭文件定義的宏沖突所致
解決方案有2個
1.
#ifdef XXX
#undef XXX
#endif
2.包含對象定義所在頭文件于調(diào)用系統(tǒng)頭文件之前.

這里的XXX在具體情況中可能為GetObject,LoadImage等等
posted @ 2010-06-08 16:55 ccsdu2009 閱讀(25278) | 評論 (2)編輯 收藏
 
GUI系統(tǒng) 布局管理器
1.布局管理器存在的理由:可以避免手動或者逐個調(diào)整控件位置
2.布局管理器的基本功能:調(diào)整同一容器下同一層次下各個控件的位置
3.布局管理器的基本接口:
       A.控件加入
       B.控件移除
       C.控件排列
4.布局管理器和控件的關(guān)系
       A.一個布局管理器負(fù)責(zé)1個或則多個控件的排列
       B.具有控件容器語義的控件(例如面板)持有一個布局管理器
5.合適調(diào)用布局管理之布局?
      A.持有的控件尺寸變化,移動或者用戶顯示的調(diào)用之時
6.可能的布局管理器類型
      A>流式,中央布局,盒子,復(fù)雜類型,...

7.簡單的布局管理器接口
///////////////////////////////////////////////////////////
/// UI布局信息基類
///////////////////////////////////////////////////////////
class UILayoutInfo
{
public:
    UILayoutInfo(){}
    
virtual ~UILayoutInfo(){}
public:
    
virtual engine_string GetLayouttType()const = 0;
};

///////////////////////////////////////////////////////////
/// 定義UI布局管理器基類
///////////////////////////////////////////////////////////
class UILayouter
{
public:
    UILayouter(){}
    
virtual ~UILayouter(){}
public:
    
////////////////////////////////////////////////////////
    
/// 增加一個窗體到布局管理區(qū)
    
////////////////////////////////////////////////////////
    virtual UILayouter& AddWidget(Widget* widget) = 0;
    
virtual UILayouter& AddWidget(Widget* widget,const UILayoutInfo&)
    {
        AddWidget(widget);
        
return *this;
    }

    
////////////////////////////////////////////////////////
    
/// 控件移除和重新排列
    
////////////////////////////////////////////////////////    
    virtual UILayouter& RemoveWidget(Widget* widget) = 0;
    
virtual UILayouter& Arrange(Widget* parent) = 0;
};

所有類型的布局管理器都需要繼承于UILayouter
其成員函數(shù)Arrange負(fù)責(zé)調(diào)配parent控件下的所有控件單元.

需要說明的是當(dāng)容器控件加入一個新的控件的時候,其布局管理器就會調(diào)用AddWidget負(fù)責(zé)把新的控件加入布局管理器對象

舉一個UI面板的例子:
////////////////////////////////////////////////////////////
/// UI面板(容器)
////////////////////////////////////////////////////////////
class G_DLL_API Panel : public Widget
{
public:
    Panel(
const Rectf& rect,Widget* parent,const engine_string& text = "Panel");
    
virtual ~Panel();
public:
    
////////////////////////////////////////////////////////
    
/// 加入一個子窗體
    
////////////////////////////////////////////////////////
    Panel& AddChildWidget(Widget* widget)
    {
        windows_.push_back(widget);
        layouter_
->AddWidget(widget);
        
return *this;
    }
    Panel
& AddChildWidget(Widget* widget,const UILayoutInfo& info)
    {
        windows_.push_back(widget);
        layouter_
->AddWidget(widget,info);
        
return *this;
    }

    
////////////////////////////////////////////////////////
    
/// 控件移除
    
////////////////////////////////////////////////////////
    Panel& RemoveChildWidget(Widget* widget)
    {
        windows_.remove(widget);
        layouter_
->RemoveWidget(widget);
        
return *this;
    }

    
////////////////////////////////////////////////////////
    
/// 控件排列
    
////////////////////////////////////////////////////////
    Panel& ArrangeChildren()
    {
        layouter_
->Arrange(this);
        
return *this;
    }

    
////////////////////////////////////////////////////////
    
/// 加載布局管理器
    
////////////////////////////////////////////////////////
    Panel& SetLayouter(UILayouter* layouter);
在我設(shè)計的時候主要參考了2個GUI庫,glooey,opengl gui lib
目前商業(yè)上使用的開源CEGUI過于復(fù)雜 比很多游戲引擎都大 讓人難以容忍
posted @ 2010-06-02 17:14 ccsdu2009 閱讀(2071) | 評論 (4)編輯 收藏
 

引擎之GUI將會是當(dāng)前引擎開發(fā)的當(dāng)務(wù)之急(做完這個我想使用引擎做游戲)
那么GUI屆時將提供那里功能和特點呢?
如下:
1.可以使用腳本(當(dāng)前為xml配置GUI屬性)
2.統(tǒng)一的GUI畫面風(fēng)格
3.配備專有的GUI編輯器
4.盡可能的和引擎保持獨立以便讓第三方使用和學(xué)習(xí)
5.必要的控件裝飾器和布局管理器設(shè)計以增強UI設(shè)計的便利
6.使用信號插槽處理消息(似乎都是這樣做的)
7.應(yīng)該最少支持vc9,devc++2個編譯器
7.做完之后的風(fēng)格表現(xiàn)應(yīng)該不遜于下圖:

使用xml配置之后變成了;

另外一組圖面:


2.

GUI庫網(wǎng)上很多
但是我覺得還是自己弄一個比較好
附注L:去年我設(shè)計了半個GUI庫后面放棄了問題太多嘍
posted @ 2010-06-01 14:36 ccsdu2009 閱讀(1679) | 評論 (9)編輯 收藏
僅列出標(biāo)題
共38頁: First 25 26 27 28 29 30 31 32 33 Last 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线1区| 欧美亚洲视频| 欧美在线精品免播放器视频| 久久精品一区二区三区不卡牛牛 | 一本一本久久| 国产精品麻豆va在线播放| 久久国产精品99国产| 久久九九精品| 亚洲一区观看| 久久久久久久久久码影片| 亚洲精品视频免费观看| 中文亚洲视频在线| 亚洲国产精品传媒在线观看| 一区二区三区精品国产| 尤物视频一区二区| 亚洲视频日本| 亚洲全黄一级网站| 午夜精品三级视频福利| 亚洲精品在线一区二区| 欧美亚洲色图校园春色| 99精品久久久| 久久久久久久久岛国免费| 亚洲欧美日韩国产中文在线| 久久久国产精品一区| 午夜天堂精品久久久久| 久热国产精品视频| 久久精品一区四区| 国产精品扒开腿做爽爽爽视频 | 欧美日韩免费| 久久亚洲一区二区三区四区| 欧美婷婷久久| 91久久国产精品91久久性色| 国产婷婷成人久久av免费高清| 亚洲娇小video精品| 黑丝一区二区三区| 亚洲在线视频观看| 欧美激情1区2区3区| 久久gogo国模裸体人体| 欧美三级在线视频| 亚洲片在线观看| 亚洲国产老妈| 久久女同精品一区二区| 久久久www免费人成黑人精品 | 久久九九精品| 国产日产精品一区二区三区四区的观看方式 | 亚洲国产精品va在线看黑人动漫| 国产一区二区三区的电影| 亚洲性视频h| 宅男噜噜噜66一区二区66| 欧美国产第一页| 亚洲高清精品中出| 精品99一区二区| 久久精品亚洲一区| 黄色精品一区| 久久久水蜜桃| 农村妇女精品| 136国产福利精品导航网址应用| 久久aⅴ国产欧美74aaa| 国产精品亚洲аv天堂网| 亚洲精品乱码久久久久久久久| 日韩午夜电影| 欧美日韩亚洲视频| 在线亚洲自拍| 欧美一区二区福利在线| 狠狠色综合网站久久久久久久| 欧美主播一区二区三区| 免费观看亚洲视频大全| 亚洲激情在线| 欧美日韩综合视频| 一区二区三区四区国产| 校园春色综合网| 国产亚洲激情在线| 老司机精品导航| 亚洲日本欧美天堂| 亚洲一区二区三区视频| 国产欧美日韩不卡免费| 久久精品在线免费观看| 免费在线成人av| 夜夜嗨av一区二区三区 | 欧美二区在线看| 亚洲一级在线| 久久久久国产精品一区二区| 在线电影国产精品| 欧美高清视频免费观看| 中文久久精品| 免费视频亚洲| 亚洲午夜一区二区| 激情久久久久久久久久久久久久久久| 美女视频网站黄色亚洲| 日韩视频在线一区二区| 久久精品91久久香蕉加勒比| 亚洲第一在线综合网站| 欧美午夜在线视频| 久久精品免费观看| 日韩一区二区精品视频| 久久精品免费观看| 亚洲看片一区| 国产精品素人视频| 欧美成人三级在线| 欧美亚洲免费| 99精品久久免费看蜜臀剧情介绍| 久久久999| 在线亚洲精品福利网址导航| 红桃视频成人| 国产精品入口福利| 一区二区三区视频在线观看| 免费欧美日韩| 亚洲美女毛片| 国产精品视频在线观看| 国产精品99久久不卡二区 | …久久精品99久久香蕉国产| 亚洲影院在线| 欧美午夜电影在线观看| 亚洲视频精选| 女人天堂亚洲aⅴ在线观看| 一区二区三区四区蜜桃| 国产一区在线观看视频| 亚洲国产经典视频| 性久久久久久久久久久久| 亚洲精品午夜精品| 亚洲精品孕妇| 日韩视频三区| 99日韩精品| 老司机精品视频网站| 好看不卡的中文字幕| 欧美在线视频在线播放完整版免费观看| 99热精品在线| 国产情人节一区| 美女精品网站| 欧美韩日精品| 久久gogo国模啪啪人体图| 久久av二区| 9l国产精品久久久久麻豆| 国产一区在线看| 国产乱码精品1区2区3区| 欧美日韩综合网| 欧美日韩激情小视频| 欧美多人爱爱视频网站| 久久久久久久999| 久久激情久久| 性久久久久久| 久久aⅴ国产欧美74aaa| 亚洲欧美久久久久一区二区三区| 亚洲深夜影院| 亚洲欧洲日产国产综合网| 在线精品亚洲| 亚洲国产精品久久久久婷婷老年| 樱桃视频在线观看一区| 一区二区在线不卡| 亚洲电影天堂av| 最新中文字幕亚洲| 亚洲美女色禁图| 亚洲视频在线观看一区| 亚洲女爱视频在线| 亚洲欧美久久久久一区二区三区| 亚洲欧美在线一区| 久久av免费一区| 美乳少妇欧美精品| 欧美大片在线影院| 亚洲国产高清aⅴ视频| 亚洲高清免费在线| 日韩亚洲欧美精品| 国产精品99久久99久久久二8| 亚洲在线不卡| 久久aⅴ国产欧美74aaa| 每日更新成人在线视频| 欧美日韩高清在线观看| 国产精品v欧美精品v日韩| 国产欧美日韩三区| 亚洲电影有码| 亚洲影院色在线观看免费| 久久国产成人| 欧美福利视频在线观看| 夜夜狂射影院欧美极品| 欧美一区二区三区电影在线观看 | 精品99视频| 亚洲三级免费电影| 亚洲在线日韩| 欧美大胆人体视频| 亚洲丝袜av一区| 久久精品亚洲一区二区三区浴池| 欧美极品欧美精品欧美视频| 国产精品无码专区在线观看| 亚洲电影在线免费观看| 亚洲亚洲精品在线观看 | 欧美视频一区二区三区在线观看 | 一区精品在线| 99天天综合性| 久久亚洲国产精品一区二区| 亚洲三级视频在线观看| 亚洲欧美日韩一区二区| 老色批av在线精品| 国产精品亚洲网站| 亚洲国产精品va| 欧美一区亚洲二区| 亚洲精品极品| 久久久久久久久久久成人| 欧美日韩午夜精品| 一区二区亚洲精品| 欧美在线三区|