游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3288|回复: 6

D3D光的初级问题!求教中........

[复制链接]

25

主题

31

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2004-1-18 19:33:00 | 显示全部楼层 |阅读模式
各位高手朋友,我现在在学习lights,在读D3D的源代码时,碰到了几个问题,因是新手,幼稚问题请间量!
1,演示是一个什么几何图形呢?是个中空的圆柱体吧!
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 50*2*sizeof(CUSTOMVERTEX)....),是不是定义了100个顶点呢?
用了法线绘制对象吗?说实在的,我看不懂这段代码!:
for( DWORD i=0; i<50; i++ )
    {
        FLOAT theta = (2*D3DX_PI*i)/(50-1);
        pVertices[2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0f, cosf(theta) );
        pVertices[2*i+0].normal   = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
        pVertices[2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0f, cosf(theta) );
        pVertices[2*i+1].normal   = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
    }
  可以讲讲吗?我很笨的 !唉!
2, D3DXMatrixIdentity( &matWorld );这个函数是什么意思?E文的,我没太看明白!请教中.....
3, vecDir = D3DXVECTOR3(cosf(timeGetTime()/350.0f),
                         1.0f,
                         sinf(timeGetTime()/350.0f) );
这是个定义光的方向的代码,还是矢量的问题!想不明白!请教中.......
4,mtrl.Diffuse.b = mtrl.Ambient.b = 0.0f;这是定义材质的一个代码,它=环境光?整个的运行效果是黄色的光!我该了平行光的值,效果颜色也变了!改变材质的颜色也改变,我想知道例子的光效到底是哪个占主导啊?(平行,材质)为什么我将它们设置了两种颜色,但在运行效果中不能看到两种颜色呢?
好象都是初级问题!唉,但对我就很难了!
[em17] [em17] [em17]

6

主题

47

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2004-1-18 20:33:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

我也是学D3D刚刚入门,多指教
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 50*2*sizeof(CUSTOMVERTEX)....),是不是定义了100个顶点呢?

是创建了一个顶点缓冲,大小是100* bytes of CUSTOMVERTEX, 这个东西是用来装你的顶点数据的。


D3DXMatrixIdentity( &matWorld );这个函数是什么意思?E文的,我没太看明白!请教中.....  

单位化matWorld



6

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2004-1-19 02:49:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

从你给出的代码可以看出,你看的教程和我看的是同一本。
不过你似乎没有配套光盘。你要可以联系我:QQ:67576456

6

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2004-1-19 03:19:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

第一个问题:
    图形是中空的圆柱体。
     for( DWORD i=0; i<50; i++ )
    {
        FLOAT theta = (2*D3DX_PI*i)/(50-1);
        pVertices[2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0f,    cosf(theta) );
        pVertices[2*i+0].normal   = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
        pVertices[2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0f, cosf(theta) );
        pVertices[2*i+1].normal   = D3DXVECTOR3( sinf(theta), 0.0f, cosf(theta) );
    }
        这段程序是用画圆的算法对顶点指针数组进行操作,X ,Z坐标用圆的参数方程调控,而Y只需-1.0F与1.0F,因为只需花上下两个圆。
至于第二个问题去查MSDN吧。
第三个问题:
      这段代码表示光的方向随时间沿圆形轨迹
变化。timegettime()好象是累加系统时间
什么的,自己查查吧。
第四个问题:
      你对材质的理解有误区。材质的本质是物体对各色光的反射程度 。
      mtrl.Diffuse.b = mtrl.Ambient.b = 0.0f     是表示物体在环境光与漫放射两种光照计算模型下不反射蓝光。由此可以说明,物体最终的颜色由光源颜色与材质共同决定。

6

主题

34

帖子

36

积分

注册会员

Rank: 2

积分
36
QQ
发表于 2004-2-3 11:07:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

Direct3D真是复杂的说

51

主题

150

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
发表于 2004-2-3 13:55:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

D3DXMatrixIdentity( &matWorld );
单位化世界矩阵

11

主题

53

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2004-2-4 00:32:00 | 显示全部楼层

Re:D3D光的初级问题!求教中........

1。注意圆柱体的上底和下底的第一个vertex和最后一个vertex是重合的,
2。生成的是单位矩阵,
3。生成一个三维向量
4。最后的效果是很多因素的体现,(材质,光,法线,)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 03:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表