首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX照明

DirectX照明
EN

Stack Overflow用户
提问于 2012-03-31 20:15:49
回答 1查看 850关注 0票数 2

嗨。我有一个使用directX10和C++的小游戏。但是,我开始使用meshloaderfromOBJ10 direct X示例来制作它,并且一直在它的基础上构建。然而,我的物体看起来都是纯黑色的,尽管它们有颜色。

我知道这是因为灯光,但似乎更改任何代码来处理灯光并不会从这个示例中得到任何结果。

我想知道有没有人知道一种简单的方法来照亮所有的东西,就像让它到处都亮一样。我不关心阴影或反射或任何类似的东西,因为我正在做的事情是没有必要的,但看到我的物体而不仅仅是轮廓会很好。

干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-01 09:37:48

然而,我的对象看起来都是纯黑色的,尽管它们有颜色。

如果着色器需要设置纹理并从该纹理读取材质信息,而您将空纹理设置为相应的纹理阶段(采样器或在DX10中的任何调用),则着色器将从该空纹理读取黑色。没有镜面反射/发射或反射贴图的黑色材质始终看起来是黑色的,无论使用多少灯光。

在没有纹理的材质/对象上使用白色纹理(假设着色器了解材质颜色并将其与纹理颜色相乘)。或者切换到DX9,并使用固定功能的管道,该管道将缺少的纹理视为白色。或者修改着色器以支持不带纹理的材质。

方法来照亮所有东西,就像让它到处都变亮一样

您可以使用“全局”环境光(您必须将其添加到着色器中,因为D3D10没有固定的函数管道)。然而,你并不是真的想要它,因为

我不关心阴影

你实际上关心阴影,只是还不知道而已。全局环境光值将使所有材质在没有任何渐变的情况下均匀着色。这意味着如果你有一个没有纹理的复杂网格,你将无法弄清楚你正在看的是什么,并且任何有纹理的东西都会看起来很丑陋。此外,黑色材质仍将保持黑色。因此,要“让它到处明亮”,你需要“太阳”--定向光源或一个非常大的点光源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9955762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档