??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品丝袜久久久中文字幕,五月丁香综合激情六月久久,狠狠色丁香久久婷婷综合蜜芽五月http://www.shnenglu.com/eros/探烦C++zh-cnThu, 08 May 2025 16:28:16 GMTThu, 08 May 2025 16:28:16 GMT60luabinddlua脚本中的变量http://www.shnenglu.com/eros/archive/2010/05/15/115417.html林公?/dc:creator>林公?/author>Fri, 14 May 2010 17:40:00 GMThttp://www.shnenglu.com/eros/archive/2010/05/15/115417.htmlhttp://www.shnenglu.com/eros/comments/115417.htmlhttp://www.shnenglu.com/eros/archive/2010/05/15/115417.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/115417.htmlhttp://www.shnenglu.com/eros/services/trackbacks/115417.html     刚开始用luabindQ对一些基本的使用有些了解Q记录下来以备查阅。这文章里主要讨论如何在C++中访问lua脚本中的变量Q函数?br>     假设有一个test.lua脚本Q内容如下:

 1--test.lua
 2
 3function printColor()
 4    colour = ColourValue(1111);
 5    colour:printColor();
 6end
 7
 8Config = 
 9{
10    color = ColourValue(1111),
11    count = 5,
12    fun = printColor
13
14}

     ColourValue是C++c,定义如下Q?br>
 1class ColourValue
 2{
 3public:
 4    ColourValue(float r = 1.0,
 5                float g = 1.0,
 6                float b = 1.0,
 7                float a = 1.0) : mR(r), mB(b), mG(g), mA(a)
 8    {
 9    }

10
11    void printColor()
12    {
13        cout << mR << ""
14             << mG << ""
15             << mB << ""
16             << mA << "" 
17             << endl;
18    }

19
20protected:
21    float mR;
22    float mG;
23    float mB;
24    float mA;
25}
;

     C++导出cdlua中可以见之前的一文?点这?/a>)Q就不再赘述Q假设ColourValue和它的成员函数printColor()已经导出到luaQ那么如何在C++中访问Config表中的变量呢Q这里就要用到luabind中的globals(lua_State* L)函数 ?br>
    q个函数q回的是全局表,表中包含加蝲的lua脚本中所有的变量Q下面依ơ讲解如何来获取Config表中的三个变量?br>
1// 取得全局表对象?/span>
2luabind::object global = luabind::globals(L);
    
    lua脚本中的所有元素都是放在这个全局表中的,所以可以用lua table的语法来讉K其中的元素:
1// 获取脚本中的Config表?/span>
2luabind::object configTable = global["Config"];
    
    q样Q就可以通过configTable讉KConfig表中的元素了Q?/span>
    ①访问color:
1// 讉KConfig表中的color?/span>
2ColourValue color = luabind::object_cast<ColourValue>(configTable["color"]);
     注意Q这里有一个{型动作,因ؓColorValuecdl导入到lua中,所以luabind知道如何转换Q否则,转换发生异常?br>   
    ②访问countQ?/span>
1// 讉KConfig表中count?/span>
2int count = luabind::object_cast<int>(configTable["count"]);
     有了之前的讲qͼq个应该很好理解了?/span>

     ③访问printColorQ?/span>
1// 讉KConfig表中的printColor函数?/span>
2luabind::object printColor = configTable["fun"];
     在C++代码中调用printColor有两U方法:
    
1printColor();                                      // W一U调用方法?/span>
2luabind::call_function<void>(printColor); // W二U调用方法?/span>
    注意W二U调用方法用了call_function函数的重载Ş式?br>
     如果要访问全局表中的变量,Ҏ是一LQ只不过是用globle句柄q行讉KQ这里就不再赘言?/span>

]]>
Ogre学习W记(一)http://www.shnenglu.com/eros/archive/2009/05/20/83455.html林公?/dc:creator>林公?/author>Wed, 20 May 2009 03:48:00 GMThttp://www.shnenglu.com/eros/archive/2009/05/20/83455.htmlhttp://www.shnenglu.com/eros/comments/83455.htmlhttp://www.shnenglu.com/eros/archive/2009/05/20/83455.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/83455.htmlhttp://www.shnenglu.com/eros/services/trackbacks/83455.html本系列文章部分内Ҏ源于http://ogre3d.cn 的Ogrepd教程的中文翻译版Q加上一些我自己学习时的W记?/span>

Ogre三基?br>
SceneManager 场景理?br>
    屏幕上显C的所有东襉K有场景管理器来管理。当往场景中添加物体时Q场景管理器会记录物体的位置Q当d摄像机来观察某个场景Ӟ场景理器会记录摄像机的位置。Ogre里有多种场景理?br>
Entity 实体

    一个实体是可以在场景中渲染的物体之一。可以把实体理解ZQ何一?D模型。一个机器h可以使一个实体,一条鱼可以是一个实体,大地草原可以是一个非常大的实体?span style="color: red;">灯光Q摄像机Q粒子,q告牌等不能成ؓ实体?/span>
    Ogre中你不能直接一个实体放入场景中Q而是实体与场景节点l在一Pq个场景节点则包括了实体的方位信息?br>
SceneNode 场景节点
  
    场景节点持l跟t与它绑在一L实体的方位。当你创Z一个实体时Q它直到与一个场景节点绑定后才会被渲染。同P一个场景节点也不能单独的在屏幕上显C出来,只有与一个实体绑定后才能在屏q上昄?span style="color: red;">一个场景节点可以绑定多个实体,场景节点同样可以和其他场景节点绑定,但是一个实体不能被多个场景节点l定?/span>
    每个场景理器都有一个根节点Q而场景节炚w是在根节点的基础上徏立,其位|L相对于根节点的?br>
实践

    要创Z个实体,可以调用SceneManager的createEntityҎQ?br>   
// 创徏一个实? 加蝲Athena|格?/span>
Entity
* entity1 = mSceneMgr->createEntity("athene1""athene.mesh");
    createEntity的第一个参Cؓ实体指定了一个唯一的标识符Q第二个参数表示要加载的资源名称Q在q里是一个名为athene的网格模型?br>
    我们可以个实体代表的|格模式指定一个材质:
// 讄|格材质?/span>
entity1->setMaterialName("Examples/Athene/NormalMapped");

    创徏了一个实体后Q还要创Z个场景节点与它绑定v来:
// 创徏一个子场景节点?/span>
SceneNode* node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("athene1");
    与实体一P场景节点的名字也是唯一的,在这里是athene1?br>
    然后实体和场景节点l定Q?br>
// 实体绑定到场景节点上?/span>
node1->attachObject(entity1);
    l定之后实体׃被渲染出来,默认情况下实体会被渲染到世界坐标的原?0, 0, 0)处?br>
    要改变实体在场景中的位置Q可以用与之绑定的场景节点的setPositionҎQ?br>
node1->setPosition(3000);
    q样场景节点q对于根节点往X轴正方向Ud?0个单位?br>
    同样Q还可以使用场景节点的translateҎ辑ֈ相同的目的:
node1->translate(Vector3(3000));
    setPosition位置的改变是相对于父节点?translate则可以设|变换相对于哪个坐标pR?br>
    要得到场景节点的父节点,可以调用getParentNode:
SceneNode* parentNode = node1->getParentSceneNode();
    
    要得到场景节点的名称Q可以调用getName:
String nodeName = nod1->getName();

    因ؓ场景节点的移动都是相对于父节点的Q所以很Ҏ实现两个节点一L动:
Entity *entity1 = mSceneMgr->createEntity( "Athene1""Athene.mesh" );
SceneNode 
*node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "AtheneNode1" );
ode1
->attachObject( entity1 );

Entity 
*entity2 = mSceneMgr->createEntity( "Athene2""Athene.mesh" );
SceneNode 
*node2 = node1->createChildSceneNode( "AtheneNode2", Vector3( 5000 ) );
node2
->attachObject( entity2 );
    q样一来,node1成了node2的父节点Q移动node1会node2跟着一L动,而移动node2不会影响node1?br>
~放

    使用场景节点可以对网格模型进行羃放:
node1->scale(1.51.51.5);
    scale的三个参数分别对应x, y, z方向上的~放比例Q上面的例子网格模型放大到1.5倍?br>
旋{

    q可以对|格模型q行旋{Q其中yaw是Y轴的旋{Qpitch是X轴的旋{Qroll是Z轴的旋{Q?br>
node1->yaw(Degree(-90));
node1
->pitch(Degree(-90));
node1
->roll(Degree(-90));





]]>
Direct3D材质和灯光小?/title><link>http://www.shnenglu.com/eros/archive/2009/05/14/82894.html</link><dc:creator>林公?/dc:creator><author>林公?/author><pubDate>Wed, 13 May 2009 18:53:00 GMT</pubDate><guid>http://www.shnenglu.com/eros/archive/2009/05/14/82894.html</guid><wfw:comment>http://www.shnenglu.com/eros/comments/82894.html</wfw:comment><comments>http://www.shnenglu.com/eros/archive/2009/05/14/82894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/eros/comments/commentRss/82894.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eros/services/trackbacks/82894.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">mDevice</span><span style="color: #000000;">-></span><span style="color: #000000;">SetRenderState(D3DRS_AMBIENT, </span><span style="color: #000000;">0xffffffff</span><span style="color: #000000;">);</span></div>      光照 <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">DirectX<font face="宋体">中有四种光照模型Q?/font></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">环境光:环境光没有方向和位置上的特征Q只有一个颜色亮度|不会衰减Q所以在所有方向和所有物体表面投的环境光的数量是恒定不变的?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">漫反:漫反在生活中最为普遍,太阳光的直射Q日光灯的照都可以用O反射光来模拟。O反射由光的方向和物体表面的法向量军_。O反射光的I间位置和方向对物体的照明有很大的媄响?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">镜面反射Q当观察金属制品和玻璃制品的表面Ӟ改变观察点的位置Q会发现物体表面的亮度也会发生变化,q种现象UC为镜面反?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">自发光:是物体自n发光Q通过讄材质的自发光属?font face="Times New Roman">Emissive</font><font face="宋体">Q颜色和透明度)来实现。自发光可以影响一个对象的颜色。可以用材质的自发光来实现发光的对象,而不用在场景中添加灯光,减少了计量?/font></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">用自发光属性创建的材质q不发射能被场景中其他物体反的光,也就是说自发光不参与光照计算?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0"></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">有三U光?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">点光源:点光源有颜色和位|,但是没有方向Q它向所有方向发的光都一栗在E序中需要提供点光源的颜Ԍ位置Q衰减系数等参数?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">늁泡是点光源的一个例子。这U光的强度会随着距离物体的远q而衰减?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0"></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">方向光:只有方向和颜色属性的光源Q没有位|,衰减。可以想象成从无I处发来的光,例如太阳光?/p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0"></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0">聚光灯:聚光灯有颜色Q位|,方向Q类似现实中的探照灯。聚光灯又一个明亮的内椎体和大一点的外椎体组成。光的强度从内椎体到外椎体逐渐衰减Q衰减的规律?font face="Times New Roman">Falloff,Theta(</font><font face="宋体">内锥角)?/font><font face="Times New Roman">Phi</font><font face="宋体">Q外锥角Q三个属性共同决定?/font></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt;" class="p0"></p> <p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0">    DirectX<font face="宋体">中物体的颜色由光的颜色和材质的颜色共同决?/font><font face="Times New Roman">(</font><font face="宋体">和现实世界情况不同)?/font></p> <p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0">    默认情况下,D3D中的灯光是开启的Q就是说?<br /> </p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;">mDevice->Set<img src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" align="top" alt="" />RenderState(D3DRS_LIGHTING, TRUE);</div>     和忽略这一句效果一栗?br />    <br /> <p> </p> <p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0">    如果要禁用灯光,将q句代码中的TRUE改ؓFALSE?br /></p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">1 mDevice</span><span style="color: #000000;">-></span><span style="color: #000000;">SetRenderState(D3DRS_LIGHTING, FALSE);</span></div>     <br />    如果用灯光Q那么Q何的材质讄都不会有效果? <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">2 mDevice</span><span style="color: #000000;">-></span><span style="color: #000000;">SetRenderState(D3DRS_AMBIENT, </span><span style="color: #000000;">0xffffffff</span><span style="color: #000000;">);</span></div>     <br />    关于q两句代?~号??)Q又有几U情?<br />    1)1为FALSEӞ启用2Q那么会获得一个环境光照明Q此时设|材质无?渲染对象为白?Q纹理可以正常显C?如果有纹??br />    2)1为TRUEӞ启用2Q材质设|有效,会媄响渲染结果,U理可以正常昄?br />    3)1为FALSEӞ用2Q材质设|失效,U理可以正常昄?br />    4)1为TRUEӞ用2Q材质设|失效,U理无法昄(渲染对象为黑??br /><br />   P.S.以上所说的材质指的是D3DMATERIAL9Q不包括点艌Ӏ带有顶点色Ӟ1为TRUE时渲染ؓ黑色QFALSE时ؓ正常Q和2的状态无兟?br /><br />    l论Q当开启光照时Q必L定一U光源才能渲染对象正确l制(渲染状态设|的环境光或者其?U类型的光源)?br /> <p> </p> <p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"></p><img src ="http://www.shnenglu.com/eros/aggbug/82894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eros/" target="_blank">林公?/a> 2009-05-14 02:53 <a href="http://www.shnenglu.com/eros/archive/2009/05/14/82894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Qt中用DirectXhttp://www.shnenglu.com/eros/archive/2009/05/13/82758.html林公?/dc:creator>林公?/author>Tue, 12 May 2009 22:40:00 GMThttp://www.shnenglu.com/eros/archive/2009/05/13/82758.htmlhttp://www.shnenglu.com/eros/comments/82758.htmlhttp://www.shnenglu.com/eros/archive/2009/05/13/82758.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/82758.htmlhttp://www.shnenglu.com/eros/services/trackbacks/82758.html阅读全文

]]>
Luabind导出cdluahttp://www.shnenglu.com/eros/archive/2009/05/02/81661.html林公?/dc:creator>林公?/author>Fri, 01 May 2009 17:32:00 GMThttp://www.shnenglu.com/eros/archive/2009/05/02/81661.htmlhttp://www.shnenglu.com/eros/comments/81661.htmlhttp://www.shnenglu.com/eros/archive/2009/05/02/81661.html#Feedback6http://www.shnenglu.com/eros/comments/commentRss/81661.htmlhttp://www.shnenglu.com/eros/services/trackbacks/81661.html  刚开始学习LuabindQ所以算是一些简单的W记?br>  使用Luabind前要包含相关的头文gQ引入luabind命名I间。注意包含luabind.hppq不会自动包含lua相关头文Ӟ要根据需要自己添加?/span>
 
#include <luabind/luabind.hpp>

extern "C"
{
#include 
<lua.h>
#include 
<lualib.h>
}

using namespace luabind;

  假设有以下类定义Q?br>
 1 // TestClass.h
 2 class TestClass
 3 {
 4 public:
 5 
 6     TestClass(string s);
 7 
 8     static TestClass* Singleton();
 9 
10     void Print();
11 
12 private:
13 
14     static TestClass* mSingleton;
15 
16     string mString;
17 };
18 
19 // TestClass.cpp
20 TestClass* TestClass::mSingleton = NULL;
21 
22 TestClass::TestClass(string s)
23 {
24     mString = s;
25 }
26 
27 TestClass* TestClass::Singleton()
28 {
29     if (TestClass::mSingleton == NULL)
30     {
31         return new TestClass("Hello");
32     }
33     else
34     {
35         return mSingleton;
36     }
37 }
38 
39 void TestClass::Print()
40 {
41     cout << mString << endl;
42 }
 
  创徏一个bindClass函数Q用来进行导出类的相兛_?/span>
 1 int bindClass(lua_State* L)
 2 {
 3     open(L);
 4 
 5     module(L)
 6         [
 7             class_<TestClass>("TestClass")
 8             .def(constructor<string>())
 9             .def("Print"&TestClass::Print),
10             def("Singleton"TestClass::Singleton)    // h意static成员函数Singleton()导出时和非静态成员函数的写法区别Q?br>                                                                     // 和全局函数的导出写法一栗?/span>
11         ];
12 
13     return 0;
14 }
  def模版cM定义导出函数Ӟ成员函数指针一定要用取地址W?/span>&Q?span style="COLOR: #000000">如TestClass::Print()?span style="FONT-FAMILY: 微Y雅黑">而自由函数和静态函数可用可不用Q如
TestClass::Singleton()?br>  现在可以写代码试了:
// test.lua
1 testClass = Singleton()
2 testClass:Print()

// main.cpp
 1 int _tmain(int argc, _TCHAR* argv[])
 2 {
 3     TestClass testClass("Hello from lua.");
 4     
 5     lua_State* L = luaL_newstate();
 6 
 7     init(L);
 8 
 9     luaL_dofile(L, "add.lua");
10 
11     lua_close(L);
12 
13     return 0;
14 }
15 
  q行l果Q?/span>



]]>
VS2008下编译luabind 0.8.1http://www.shnenglu.com/eros/archive/2009/04/29/81508.html林公?/dc:creator>林公?/author>Wed, 29 Apr 2009 15:31:00 GMThttp://www.shnenglu.com/eros/archive/2009/04/29/81508.htmlhttp://www.shnenglu.com/eros/comments/81508.htmlhttp://www.shnenglu.com/eros/archive/2009/04/29/81508.html#Feedback5http://www.shnenglu.com/eros/comments/commentRss/81508.htmlhttp://www.shnenglu.com/eros/services/trackbacks/81508.html     学了一D|间LuaQ显然直接在目中用是很不方便Qgoogle了一下,g大家都对luabindq个lua包装c青睐有加,于是我也随大势想用用看?br>     先做好准备工作,下蝲了luabin 0.8.1源码QBoost 1.3.8源码和lua 5.1.4源码Q编译环境是VS2008 SP1。之前在|上看到一些文章说q些开源Y件之间的版本依赖比较敏感Q可能会有这样那L问题Q动手之前有些惶恐?br>     q运的是Q编译过E很利Q如下:
     1.~译lua 5.1.4
     q入VS2008的命令行工具Q定位到lua的源码目录下Q执行命令etc\luavs.batQ没什么问题的话很快就可以~译好luaQ得到lua51.lib和lua51.dll?br>     2.~译luabind
     解压下蝲回来的luabind压羃包,假设解压到d:\luabind-0.8.1\QBoost解压到d:\boost 1_38_0\Qlua解压到d:\lua 5.1.4\
     在VS中新Z个静态库目Q将d:\luabind-0.8.1\src下的源码全部d到项目中Q然后在目中新建luabind和luabind\detail\两个虚拟文g夹,对应的将d:\luabind-0.8.1\luabind和d:\luabind-0.8.1\luabind\detail下的文gd到文件夹中?br>     然后为项目添加附加包含目录,右键点击目节点->属?>配置属?>C\C++标签下,在附加包含目录中填入d:\luabind-0.8.1\Qd:\boost 1_38_0\kQd:\lua 5.1.4\src\。然后修攚w目字W集为多字节字符集?br>     准备qAQ生成项目。在我的环境中编译很利Q没有出CQ何问题,成功后会得到luabind.lib?br>
     接下来就按照惯例来写一个hello worldE序作ؓ使用luabind的第一步?br>     在VS中新Z个控制台目Q类型ؓDLLQ命名项目ؓHello WorldQ然后键入以下代码:

 1#include "stdafx.h"
 2#include <iostream>
 3#include <luabind/luabind.hpp>
 4
 5void greet()
 6{
 7    std::cout << "hello world!\n";
 8}

 9
10extern "C" int __declspec(dllexport) init(lua_State* L)
11{
12    using namespace luabind;
13
14    open(L);
15
16    module(L)
17    [
18        def("greet"&greet)
19    ];
20
21    return 0;
22}


   注意Q在Windows环境下init函数之前是要加__declspec(dllexport)才能函数导出的Q而luabind的文档中的环境是linuxQ默认不用加__declspec(dllexport)也可以导?因个折腾了我半天才把hello word成功q行)?br>   ~译目Q?记得luabind.lib和lua51.libd到链接选项中:目属?>q接?>输入->附加依赖文gQ加入luabind.lib和lua51.lib)?br>   hello world.dll攑ֈlua51.dll和lua.exe所在的目录下?br>   打开lua命o行,键入:
    
   试成功Qenjoy?/font>



]]>
SceneNode::setDirection函数问题http://www.shnenglu.com/eros/archive/2008/12/30/70732.html林公?/dc:creator>林公?/author>Mon, 29 Dec 2008 17:27:00 GMThttp://www.shnenglu.com/eros/archive/2008/12/30/70732.htmlhttp://www.shnenglu.com/eros/comments/70732.htmlhttp://www.shnenglu.com/eros/archive/2008/12/30/70732.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/70732.htmlhttp://www.shnenglu.com/eros/services/trackbacks/70732.htmlmSn->translate(mPosition * evt.timeSinceLastFrame, Node::TS_WORLD);         刚开始学习Ogre,做了个很单的demo,用键盘的上下左右控制一个h物模型四处走动。逻辑很简单,但是实现到想要的效果却费了一番周折?br>      一开始用一个Vector3 mPosition变量保存人物的位|,然后Real mWalkSpeed保存人物的移动速度Q在上下左右的按键响应代码中分别
写上处理人物各方向移动的代码Q?/span>
 
 1    bool DemoFrameListener::keyPressed(const OIS::KeyEvent &arg)
  
2{
 
3    switch (arg.key)
 
4    {
 
5    // 按下Escape键,退出程序?/span>
 6    case OIS::KC_ESCAPE:
 
7        mContinue = false;
 
8    
 
9    // W、S、A、D控制人物行走?/span>
10    case OIS::KC_UP:
11    case OIS::KC_W:
12        mPosition.z -= mWalkSpeed;
13        mSn->setDirection(Vector3::NEGATIVE_UNIT_Z);
14        // 取得模型?Walk"动画集?/span>
15        mAnimationState = mEntity->getAnimationState("Walk");
16        break;
17    case OIS::KC_S:
18    case OIS::KC_DOWN:
19        mPosition.z += mWalkSpeed;
20        mSn->setDirection(Vector3::UNIT_Z);
21        // 取得模型?Walk"动画集?/span>
22        mAnimationState = mEntity->getAnimationState("Walk");
23        break;
24    case OIS::KC_A:
25    case OIS::KC_LEFT:
26        // 取得模型?Walk"动画集?/span>
27        mAnimationState = mEntity->getAnimationState("Walk");
28        mSn->setDirection(Vector3::UNIT_X);
29        break;
30    case OIS::KC_D:
31    case OIS::KC_RIGHT:
32        // 取得模型?Walk"动画集?/span>
33        mAnimationState = mEntity->getAnimationState("Walk");
34        mSn->setDirection(Vector3::NEGATIVE_UNIT_X);
35        break;
36    }

37
38    return true;
39}

40
然后在每一帧中调用
mSn->translate(mPosition * evt.timeSinceLastFrame, Node::TS_LOCAL);
来更Ch物位|?br>      ~译代码q行Q出C奇怪的效果。初始时人物面朝-Z轴方向,按下后应该面?Z轴方向ƈ朝这个方向行赎ͼ实际却是面朝+Z方向往-Z轴方向移动。以为逻辑代码写错DUd方向错误Q检查了半天发现一炚w误都没有。折腾了两天都没有结果,今天在群里和天时谈到SceneNode::setDirectionq个函数Qh家说调用SceneNode::setDirectionq个函数后会改变模型的局部坐标系Q顿时脑子高速运转,隐约觉得ȝ案已l不q了Q自q的一下,l于解决了问题?br>      原来Q用一个参?方向向量)调用setDirection函数Ӟ该函数有两个默认|我遇到的问题和W二个参数有养Iq个参数描述的是setDirection函数操作的参照空_有Node::TS_LOCAL,Node::TS_PARENT和Node::TS_WORLD三个可选|分别表示Q局部空_父节点空间和世界I间。在我的例子中,人物的朝向是以整个地图ؓ参照物的Q所以,q个参数应该讄成TS_WORLDQ如果取光认值Node::TS_LOCALQ调用setDirection之后Qh物的整个局部坐标系的方向都变了Q这样一来,当按下方向键Ӟ人物会面向正的方向Q但是移动的参照方向却和原来的相反,q就是ؓ什么会有正的朝向却背向移动的奇怪现象了?/span>
      另外
mSn->translate(mPosition * evt.timeSinceLastFrame, Node::TS_LOCAL);
中的Node::TS_LOCAL也要ҎNode::TS_WORLDQ人物相对于世界空间^UR?


]]>
[ZT]DirectX中的投媄变换http://www.shnenglu.com/eros/archive/2008/11/08/66356.html林公?/dc:creator>林公?/author>Sat, 08 Nov 2008 12:42:00 GMThttp://www.shnenglu.com/eros/archive/2008/11/08/66356.htmlhttp://www.shnenglu.com/eros/comments/66356.htmlhttp://www.shnenglu.com/eros/archive/2008/11/08/66356.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/66356.htmlhttp://www.shnenglu.com/eros/services/trackbacks/66356.html原脓地址Q?/span>http://blog.csdn.net/BAKER_LEE/archive/2008/08/20/2801515.aspx

     DirectX中投影变换D3DXMatrixPerspectiveFovLHQ)其实产生的变换矩阵不是将3D物体转换?Dq面画面的变换。实际上 是把3D世界的物体变换到(1,1,0) (-1,1,0) (-1,-1,0) (1,-1,0) (1,1,1) (-1,1,1) (-1,-1,1) (1,-1,1)q个盒子中。在Jim Adams 的著?lt;Role playing games with DriectX 8.0>和Frank Luna 的著作中<Introduction to 3D Game Programming with DirectX9.0>都把q个变换矩阵讲成?D?D的变换。实际上在DirectX?D?D的变换是由SDK自己完成的。而我们要做的? ?D世界变换C面那个小盒子中?

q个变换矩阵是投影变换的预变换?/p>

在DirectX中,把视口的高作?D世界里面的长度:2.0f来用的Q一个视点观察世界的视野范围在Y轴上无论什么情况下都是 -1.0f?.0fQ这一点在后面来证明)。把视口的高作ؓy_端坐标为(xQ?Q,底端坐标为(xQ?1Q?/p>

视口Q在H体中显C?D的矩形范_可以通过D3DDevice的SetViewPortQ)来设|大,默认的大ؓH体的大?/p>

变换的过E就是把点的向量乘以变换矩阵Q可以得到这个点在新坐标pȝ对应向量Q在投媄变换矩阵中Z轴的D?~1之内Q也是?D世界里所有的炚w会被投媄C上描q的盒子中?/p>

我们用函数D3DXMatrixPerspectiveFovLH来获得该“投媄变换”矩阵?/p>

D3DXMATRIX * D3DXMatrixPerspectiveFovLH(

 D3DXMATRIX * pOut ,

 FLOAT fovy ,

 FLOAT Aspect ,

 FLOAT zn ,

 FLOAT zf

);

其中参数fovy为y轴上的视角,Aspect为高宽比Qzn裁面Qzf裁面?/p>

Y轴的视角Q在DirectX的帮助文档中描述fovy为filed of view in y direction?/p>

高宽比:一般用于全屏显C,如果我们要让3D世界充满整个H口Q就必须让高宽比{于H口的高宽比Q例如让我们的窗口正常显C?#8221;标准视野”[2X2 的一个面,点坐标为(1Q?Q,Q?1Q?Q,Q?1Q?1Q,Q?Q?1Q]Q我们必LH口的高宽比讄?Q?Q这P标准视野可以充满整个窗 口,否则 会在左右留出I白Q这个空白是无法用VIEWQWORLD变换所能填充的Q相当于word文档采用“文档”视图里面的两边的灰色区域Q是无法~辑的,在一 般的3DE序里面是不允许出现q种情况的,但是我们的显C器的高宽比不是1Q?Q而且大部分的用户也不习惯?Q?的窗口来使用E序Q我们需要调整这个标 准视野,来适应我们的窗口大,Aspect是q个作用Q有一炚w要说明的Aspect不等?Q不代表标准视野׃是(1Q?Q,Q?1Q?Q, Q?1Q?1Q,Q?Q?1Q,如果Aspect = 0.5 标准视野也还是(1Q?Q,Q?1Q?Q,Q?1Q?1Q,Q?Q?1Q,只不qx轴上的单位长度的像素??y轴上单位长度的像素值的2倍?/p>

 

裁面的作? 在Z轴方向上Q不昄z坐标于zn的或者大?zf的点?/p>

     在上图中QU色的线为我们要昄的面Q红色的弧就是上面函数fovy的夹角,当这个夹角ؓ90°的时候,我们H口的视野ؓ标准视野Q?span style="color: red;">当夹角羃时Q可视范围就变小Q如图,?0°变ؓ60°的时候,可视范围变小了,要显C的面,相对于可以范围变大了Q由于我们的H口是不变的Q也是说实际显C的像素g变,要显C的面就相对于变大,fovy的值变的l果是把要昄的面变大?/span>

     当fovy?的时候呢Q视野就?Q就是说什么都看不刎ͼH口中显C的是底色?/p>

     当fovy变大?80°的时候呢Q视野的范围U夹角上的垂直于Z轴的且过点(0Q?Q?Q的q线。当视线夹角变大视野范围也变大,夹角近?80°的时候视野范围趋q于无穷大,要显C的面相对于视野范围是0Q也是说羃到最就?.所以我们在讑֮fovy的gؓ180°的时候也是什么都看不见,为底艌Ӏ?/p>

     那大?80°的情况呢Q在我们的视野理Z是不存在q种情况的,当视角大?80°Ӟ视角于Z轴垂直的q线是不会过点(0Q?Q?Q的。但是函数放在我们面前,我们是可以输入大?80°的数|l果会如何呢Q?/p>

非常奇的事情发生了Q我们的图以原点Z心旋转了180°Q这是无法用我们的视野理论来解释?因ؓ180°的视野范围就已经是个极限了,“越极限”是只能在q告中出现的词汇Q如果能越Q那׃叫极限了QPQ?/p>

     在MSDN的文档中有这样一个数学公式:y-scale = cotQfovy/2Q?/p>

     q下明白了Q当我们输入大于180°的时候cot的gؓ负数。而x-scale = y-scale/ Aspect?

也就是说Q一?D世界的点Q在视野大于180°的作用下Q它的放?~小倍数不变Q但是需要对X轴做一ơ对U变换,q要对Y轴做一ơ对U变换。相当于对原点做一ơ对U变换?/p>

拿到q个公式Q我们就可以对前面的标准做一个证明:

当fovy?0° Aspect = 1的时候,是说y-scale = cotQ?5°Q?= 1

x-scale = 1Q这时y和x的羃放比都ؓ1Q没有羃放。我们显C样一个面

              {-1.0f, -1.0f, 0.0f},

              {-1.0f, 1.0f, 0.0f},

              { 1.0f, 1.0f, 0.0f},

              {-1.0f, -1.0f, 0.0f},

              { 1.0f, 1.0f, 0.0f},

              { 1.0f,-1.0f, 0.0f}

     我们会发现无论怎么改变H口的高度,q个画面的Y轴方向上都会充满整个视口。(如果我们把视口的高度和宽度设|成一LQ在X轴上也会充满整个视口Q所以DirectX会以视口的高度的二分之一作ؓY轴的单位长度?/p>



]]>
自定义顶点结构与D3DXCOLORhttp://www.shnenglu.com/eros/archive/2008/11/08/66298.html林公?/dc:creator>林公?/author>Fri, 07 Nov 2008 20:54:00 GMThttp://www.shnenglu.com/eros/archive/2008/11/08/66298.htmlhttp://www.shnenglu.com/eros/comments/66298.htmlhttp://www.shnenglu.com/eros/archive/2008/11/08/66298.html#Feedback0http://www.shnenglu.com/eros/comments/commentRss/66298.htmlhttp://www.shnenglu.com/eros/services/trackbacks/66298.html最q系l的学习Direct3DQ?span style="font-family: 微Y雅黑; ">从DXSDK的例子学赗在Tut02_Vertices例子中,自定义顶Ҏ式ؓQ?br />
struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw; 
    DWORD color;        
    
//D3DXCOLOR color;
};

    
// 初始化顶Ҏ?/span>
    CUSTOMVERTEX vertices[] =
    {
        { 
150.0f,  50.0f0.5f1.0f, D3DXCOLOR(1.0f0.0f0.0f0.0f)/*0xffff0000*/, }, // x, y, z, rhw, color
        { 250.0f250.0f0.5f1.0f, D3DXCOLOR(0.0f1.0f0.0f0.0f)/*0xff00ff00*/, },
        {  
50.0f250.0f0.5f1.0f, D3DXCOLOR(0.0f0.0f1.0f0.0f)/*0xff00ffff*/, },
    };
     自定义格式结构体中注释掉的是我后来想用的D3DXCOLOR。原本以为将原先定义的DWORD颜色换成D3DXCOLORcdQ然后初始化的时候相应做替换可以了Q谁知道Q渲染出来的三角形顶炚w色异常:
     wrong.JPG
     正常的应该是q样
     right.JPG
     百思不得其解,郁闷x。后来终于在GameDev.net上找到近似案?q里)Q琢一番,恍然大悟?br />     原来Q在FVF点格式中,D3D需要特定的内存布局Q就是说Q你的顶Ҏ式中各项的类型应该满_的期望。比如,它要求的颜色值应该是DWORDcd?2位整数|而替换成D3DXCOLOR之后Q却变成?个floatcd?r, g, bQa)Q与其期望不W,所以导致了异常的颜艌Ӏ顶点结构体中颜色D是换回DWORDcdQ代码中的赋值可以正怋用,因ؓD3DXCOLOR有到DWORD的自动{换?br />

]]>
D3D中D3DFVF_XYZ和D3DFVF_XYZRHW的区?/title><link>http://www.shnenglu.com/eros/archive/2008/07/14/56128.html</link><dc:creator>林公?/dc:creator><author>林公?/author><pubDate>Mon, 14 Jul 2008 12:48:00 GMT</pubDate><guid>http://www.shnenglu.com/eros/archive/2008/07/14/56128.html</guid><wfw:comment>http://www.shnenglu.com/eros/comments/56128.html</wfw:comment><comments>http://www.shnenglu.com/eros/archive/2008/07/14/56128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/eros/comments/commentRss/56128.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eros/services/trackbacks/56128.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: 微Y雅黑">   学习D3D9的时候遇到灵z顶Ҏ?FVF)中D3DFVF_XYZRHW和D3DFVF_XYZ之间差异而引L问题?br>参看?span style="FONT-FAMILY: 微Y雅黑">同是C++博客的一博?其分析如?<br>       The RHW value, which stands for Reciprocal of Homogeneous W[<font color=#800000>1</font>], tells Direct3D that the vertices that are being used are already in screen coordinates. This value is normally used in fog and clipping calculations and should be set to 1.0.<br>       在顶点结构体中没有RHWӞDirect3D执行视、投影、世界等变换以及q行光线计算Q之后你才能在窗口中得到你所l制的物体。当点l构体中有RHWӞ像上面那段英文所qͼ告知Direct3D使用的顶点已l在屏幕坐标pM了,不再执行视图、投影、世界等变换和光U计,因ؓD3DFVF_XYZRHW标志告诉它顶点已l经q了q些处理Qƈ直接顶点进行光栅操作,M用SetTransformq行的{换都对其无效。不q这时的原点在客户区的左上角了Q其中x向右为正Qy向下为正Q而z的意义已l变为z-buffer的象素深度?br>       值得注意的是D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能共存Q因为后两个标志与前一个矛盾。在使用q种点Ӟpȝ需要顶点的?/span>|已l经q变换了Q也是说x、y必须在屏q坐标系中,z必须是z-buffer中的象素深度Q取D_0.0Q?.0Q离观察者最q的地方?.0Q观察范围内最q可见的地方?.0?br>---------------------------------------------------------------------------------------------------------------------------------------------------------------<br>       l合我自q试验Q有一些发玎ͼ记录下来以备忘?br>       D3DFVF_XYZ默认的用户区中心坐标是(0Q?Q,而D3DFVF_XYZRHW是左上角为(0Q?Q?br>       用D3DFVF_XYZ默认的ؓ非光照的Q而D3DFVF_XYZRHW是高zd光照?br>       当用D3DFVF_XYZӞ要设|渲染状态:</p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">      <span style="COLOR: #000000">g_pd3dDevice</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">SetRenderState(D3DRS_LIGHTING,FALSE)<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span></div>          <span style="FONT-FAMILY: 微Y雅黑">而且要设|观察矩阵和投媄矩阵Q例如:</span><br>         <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img style="WIDTH: 11px; HEIGHT: 16px" align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" width=11 height=16>      <span style="COLOR: #000000">D3DXMATRIX matProj;<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">      D3DXMATRIX matView;<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create and set the projection matrix</span><span style="COLOR: #008000"><br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">      D3DXMatrixPerspectiveFovLH(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">matProj, D3DX_PI</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">4.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1.33333f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1000.0f</span><span style="COLOR: #000000">);<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">      g_pd3dDevice</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">SetTransform(D3DTS_PROJECTION, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">matProj);<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">      </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Create and set the view matrix</span><span style="COLOR: #008000"><br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">      D3DXMatrixLookAtLH(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">matView,                                \<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">D3DXVECTOR3(</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">500.0f</span><span style="COLOR: #000000">),       \<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">D3DXVECTOR3(</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">),          \<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">D3DXVECTOR3(</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">));<br><img align=top src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif">      g_pd3dDevice</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">SetTransform(D3DTS_VIEW, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">matView);</span></div>         <span style="FONT-FAMILY: 微Y雅黑">否则没有渲染l果?/span> <img src ="http://www.shnenglu.com/eros/aggbug/56128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eros/" target="_blank">林公?/a> 2008-07-14 20:48 <a href="http://www.shnenglu.com/eros/archive/2008/07/14/56128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.yutobe.cn" target="_blank">ƷۺϾþþþþ97</a>| <a href="http://www.dghaishi.com.cn" target="_blank">˾þü91</a>| <a href="http://www.rnsqwp.cn" target="_blank">þþþù˾Ʒҹ</a>| <a href="http://www.tongdiaocj.cn" target="_blank">ƷŮٸavѾþ</a>| <a href="http://www.epcinet.cn" target="_blank">ŷþһ</a>| <a href="http://www.jhgppeizi.com.cn" target="_blank">þþƷ99Ʒ</a>| <a href="http://www.lianliankan123.cn" target="_blank">һaɫƬþٸһHƬѷ </a>| <a href="http://www.gyxcs.cn" target="_blank">þþһƷ99þþƷ88</a>| <a href="http://www.crs24.cn" target="_blank">þþŷղAV</a>| <a href="http://www.yunshujia.cn" target="_blank">þþƷ99þþùŴ</a>| <a href="http://www.xiangyuesiji.cn" target="_blank">ŷ糱þþXXXXx</a>| <a href="http://www.up2me.cn" target="_blank">þԭƷӰԺ</a>| <a href="http://www.omrk.cn" target="_blank">þ99ëƬѹۿ</a>| <a href="http://www.fyjzhxf.cn" target="_blank">Ʒþһ</a>| <a href="http://www.9yyg.cn" target="_blank">պݺݾþ͵͵ɫۺ96</a>| <a href="http://www.epfx.cn" target="_blank">þþþó˾ƷĻ</a>| <a href="http://www.sdhaomai.cn" target="_blank">Ʒһþ</a>| <a href="http://www.aijialicai.com.cn" target="_blank">þֻǾƷ23</a>| <a href="http://www.ebsiask.cn" target="_blank">aaaƷþþùƬ</a>| <a href="http://www.5yfyf.cn" target="_blank">Ʒ˾þþ</a>| <a href="http://www.227s.cn" target="_blank">þùһ</a>| <a href="http://www.wufayulecheng.cn" target="_blank">69Ʒþþþվ</a>| <a href="http://www.fvnnv.cn" target="_blank">þˬ˾ƷƵ</a>| <a href="http://www.jumingyang.cn" target="_blank">Ʒ18þþþþvr</a>| <a href="http://www.wj3y.cn" target="_blank">޹þþþƷС˵</a>| <a href="http://www.hygaiye.cn" target="_blank">þþƷ</a>| <a href="http://www.qdog.com.cn" target="_blank">97Ƶþþ</a>| <a href="http://www.zaggaa.cn" target="_blank">Ʒŷһþþ</a>| <a href="http://www.xcfsfl.cn" target="_blank">ճˮþ޾Ʒtv</a>| <a href="http://www.fuwumianyang.cn" target="_blank">ó˾þAvѸ</a>| <a href="http://www.qdjybj.cn" target="_blank">ձþĻ</a>| <a href="http://www.rrthhz.cn" target="_blank">þþþƷר</a>| <a href="http://www.fimtb.cn" target="_blank">99reþþƷҳ2020</a>| <a href="http://www.loreng.cn" target="_blank">þþþþҹƷ</a>| <a href="http://www.rigemei.cn" target="_blank">һþöAV</a>| <a href="http://www.link133.cn" target="_blank">Ʒ99þþþ </a>| <a href="http://www.cpp521.cn" target="_blank">ŷ츾XXXXԾþþ</a>| <a href="http://www.niutuan.com.cn" target="_blank">þùҹƷһ</a>| <a href="http://www.zjfinancial.cn" target="_blank">ݺɫþþۺ</a>| <a href="http://www.bodymaker.com.cn" target="_blank">þһҹ</a>| <a href="http://www.hhlou.com.cn" target="_blank">þ99ù龫Ʒ66</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>