上一页 1 ··· 180 181 182 183 184 185 186 187 188 ··· 191 下一页
摘要: <!--#includefile="inc/conn.asp"--><SCRIPTlanguage=javascript><!--vartt='start';varii='start';functionturnit(ss,bb){if(ss.style.display=="none"){if(tt!='start')tt.style.display="none";if(ii!='start')ii.src="dian.gif&quo 阅读全文
posted @ 2006-09-08 17:15 ajuanabc 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 2.10.1灯光与材质在现实的世界里,没有光线,是什么东西也看不见的。在D3D的世界里,也是一样的。但是在D3D里有一种光线,是非常奇怪的,这种光线是没有方向,没有位置,整个世界全可以照亮的光线,它就是环境光,它其实有点像我们现实生活里的无影灯。在D3D里光线分为三种类型,分别是点光源、聚光灯和方向光。材质就是说明物体是吸收什么样颜色的光线和反射什么样颜色的光线。在现实世界里,看到各种各样的物体,各色各样的。同是太阳光照射下,看到花朵有红色的,有白色的,有黄色的,还有粉红色的。这种不同的颜色的表现,我们就说是它们的材质不同,也就是它们吸收光线和反射的光线不同。在D3D里有下面几种光线类型:ty 阅读全文
posted @ 2006-09-08 00:03 ajuanabc 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 有了上面绕着坐标轴旋转的矩阵,就可以轻松地构造我们的太阳系了。在我们太阳系中,太阳是自转的,在这个例子里要就要让太阳绕着Y轴自转。在让太阳旋转之前,就要先创建太阳这个物体,在这里我采用一个大圆球代表太阳。创建太阳圆球的程序如下:LPD3DXMESH m_pMeshSun; //太阳。D3DXMATRIX m_mSunSpin; //自转矩阵这里使用类成员变量m_pMeshSun保存太阳的三角形列表,类成员m_mSunSpin保存自转矩阵。然后调用D3DXCreateSphere函数来创建太阳,这个函数就是创建一个球体的三角形网格。它具体参数如下:HRESULT D3DXCreateSphere 阅读全文
posted @ 2006-09-05 23:49 ajuanabc 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 缩放矩阵模型比较大时,就需要把它缩小,这样就需要使用到缩放矩阵。缩放矩阵如下所示:其中的S就是缩放系数,如果要放大,就需要设置S大于0。如果要缩小,就要设置S小于1大于0。D3D里已经准备好一个设置这样缩放矩阵的函数,它就是D3DXMATRIX * D3DXMatrixScaling(D3DXMATRIX * pOut,FLOAT sx,FLOAT sy,FLOAT sz);函数的第一个参数就是返回缩放矩阵,第二个参数是沿着X轴的缩放系数,第三个参数是沿着Y轴的缩放系统,第四个是沿着Z轴的缩放系数。如果三个缩放系数都相同的,就是等比例缩放,否则就是不等比例的缩放。比如需要设置一个等比例放大两倍 阅读全文
posted @ 2006-09-03 22:33 ajuanabc 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 2.10.1矩阵变换在3D游戏里,要表达不同的东西,每样东西都在不同的位置。比如构造一个间教室,那么就需要根据黑板、讲台、座位来不同位置来放置。由于所有模型坐标都是局部坐标,都需要变换到世界坐标,才显示出正确位置。还有游戏里的很多物体是动起来的,就是位置会变化,大小会变化。比如模拟一辆小车开过马路,那么这辆车就需要水平运动起来,车轮还需要旋转起来。仔细看一下车轮,它不但作平移运动,还需要作自转运动。要表达物体在不同的位置,需要使用到矩阵。要表达物体旋转运动和平移运动,也需要使用矩阵。由n元线性方程组的系统数组成的m行n列的数表,就叫做矩阵。如下图所示:由于在三维里的坐标变换,都是线性变换,所以 阅读全文
posted @ 2006-09-02 21:12 ajuanabc 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 5、 三角形扇形列表最后一种三角形列表显示是扇形排列的三角形列表。这种排列方式,有一个特别的地方,就是所有三角形共享一个顶点,这样特别适合构成曲面的地方,比如球体和圆形的东西。下面看看这个例子显示的图:通过上面这个图,可以看到4个三角形共享一个顶点,这个顶点是红颜色的,其它不同的顶点不同的颜色。下面来看看程序是怎么样实现它的显示的:HRESULT hr;// 创建顶点缓冲区。if( FAILED( hr = m_pd3dDevice->CreateVertexBuffer( 2*3 * sizeof(VT_CAIPRIMITIVE), 0, VT_CAIPRIMITIVE::dwFVF, 阅读全文
posted @ 2006-08-27 21:39 ajuanabc 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 4、 三角形带列表三角形显示的方式总共分为三种,前面已经学习最多的是三角形列表,现在再来看看三角形带列表是什么样的,这样有什么优点呢?这里显示图形如下:上面的图形可以看出,只有6个顶点就可以显示4个三角形,而采用三角形列表的方式,只能显示两个三角形。因此采用这种方式就会大大提高渲染效率,减少占用内存空间,减少占用系统带宽。具体的程序如下:HRESULT hr;// 创建顶点缓冲区。if( FAILED( hr = m_pd3dDevice->CreateVertexBuffer( 2*3 * sizeof(VT_CAIPRIMITIVE), 0, VT_CAIPRIMITIVE::dwF 阅读全文
posted @ 2006-08-24 22:58 ajuanabc 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 3、 线带列表在D3D里还提供线带列表显示,这种显示方式是把所有直线顺着顶点连接显示出来。如下图所示:采用线带列表显示的方式,可以减少顶点占用内存空间,提高显示效率。下面这段代码就是显示6个顶点的直线。m_nLineStripCount = 3;HRESULT hr;// 创建顶点缓冲区。if( FAILED( hr = m_pd3dDevice->CreateVertexBuffer( m_nLineStripCount*2 * sizeof(VT_CAIPRIMITIVE), 0, VT_CAIPRIMITIVE::dwFVF, D3DPOOL_MANAGED, &pVB, 阅读全文
posted @ 2006-08-23 22:52 ajuanabc 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 2、 线列表D3D还提供直线的显示,由于很多自然现现象需要它来显示。比如大雨,就需要使用直线来模拟出来。如下图所示:这里显示三条红、绿、蓝的直线。它的代码如下:pVertices[0].vPosition = D3DXVECTOR3( -2.0f, 0.0f,0.0f ); pVertices[0].crDiffuse = D3DCOLOR_COLORVALUE( 1.0, 0.0, 0.0, 1.0 );pVertices[1].vPosition = D3DXVECTOR3( 2.0f, 0.0f,0.0f ); pVertices[1].crDiffuse = D3DCOLOR_COLO 阅读全文
posted @ 2006-08-22 00:12 ajuanabc 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 2.10.1基本图形显示在D3D里只有几种基本图形可以显示的,它们分别是:点列表、线列表、线带列表、三角形列表、三角形带列表、三角形扇形列表。其它任何的图形,都可以由这向这几种基本图形组合出来。上面已经介绍了三角形显示了,所以这里就不再具体地说明它了。1、 点列表点列表主要显示为一个个像素点的集合,每个点都是单独显示,分离的。点列表作用是用来显示点元素,或者显示点线的。如下图所示:上面这个图就是使用点列表来显示一条正弦曲线。其实它们都是由分理的点组成,每个点可显示为不同的颜色。现在就看看怎么样用代码显示这条正弦曲线的。HRESULT hr;// 创建顶点缓冲区。if( FAILED( hr = 阅读全文
posted @ 2006-08-21 00:28 ajuanabc 阅读(140) 评论(0) 推荐(0) 编辑
上一页 1 ··· 180 181 182 183 184 185 186 187 188 ··· 191 下一页