刚开始学DirectX

tanmuxu 2006-05-12 08:29:19
我初学DirectX
在看一个CoderSample上面的一个用DirectX编写的粒子系统实例。
对其中的一个命令感到不解,d3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
为什么要将光照关闭呢?而且不执行这条指令,程序什么都渲染不出来,黑屏。

还有就是为什么渲染开始前加了这么一个函数在render()里:
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_COLORVALUE(0.0f, 0.0f, 0.0, 1.0f), 1.0f, 0 );

...全文
445 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanmuxu 2006-06-18
  • 打赏
  • 举报
回复
去 codesample找找吧。
softwaiter 2006-06-05
  • 打赏
  • 举报
回复
lz,能不能把你的例子发给我一份,我也正在学游戏编程,搜不到例子,谢谢了,softwaiter@126.com
h_cpp 2006-05-15
  • 打赏
  • 举报
回复
我猜的 嘿嘿
tanmuxu 2006-05-15
  • 打赏
  • 举报
回复
是啊。只有位置和纹理。这都知道?难道你也看过这个例子?好了,如果是这样的话,我明白了。谢谢以上各位。
h_cpp 2006-05-14
  • 打赏
  • 举报
回复
clear()的意思就是:
Clears the viewport, or a set of rectangles in the viewport, to a specified RGBA color, clears the depth buffer, and erases the stencil buffer.
对于你的第一个问题:
D3DRS_LIGHTING:TRUE to enable Direct3D lighting, or FALSE to disable it. The default value is TRUE. Only vertices that include a vertex normal are properly lit; vertices that do not contain a normal employ a dot product of 0 in all lighting calculations.
就是说,如果定点没有法向量,而且没有关掉光照计算的话,点的颜色就是0,就是黑色,所以需要将光照计算取消.我觉得你看的粒子系统的顶点结构中肯定没有法向量,可能只有位置坐标和纹理坐标的信息
我说的应该没错吧,呵呵

tanmuxu 2006-05-14
  • 打赏
  • 举报
回复
........
寻开心 2006-05-12
  • 打赏
  • 举报
回复
clear 是清空上次绘制的内容,提供一个白版了,然后再绘制
不clear就两次内容迭在一起了
rabbitlzx 2006-05-12
  • 打赏
  • 举报
回复
1.你看看粒子是什么颜色的,关闭灯光是不是为了突出粒子的颜色啊
2.Clear()可以理解为将当前屏幕清空,然后再往上画东西
以上是我的理解,不对之处还请指教
tanmuxu 2006-05-12
  • 打赏
  • 举报
回复
程序是实现一个地板上喷射出许多粒子,粒子的颜色是用贴图实现的,如果关闭关照,连地板都看不见就是个黑屏。

看来我对我对DirectX的理解不够透。

实在是不理解啊。继续研究,继续关注CSDN。

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧