没有顶点缓冲区漫射的着色纹理

时间:2011-05-23 21:18:17

标签: c++ direct3d

我目前正在开发一个二维Direct3D应用程序,我正在试图弄清楚如何正确地为不同纹理添加色调和alpha效果。

我之前有过这样的工作,但我这样做的方式是:

  1. 锁定顶点缓冲区。
  2. 更改每个顶点上的漫反射颜色。
  3. 解锁顶点缓冲区。
  4. 从那时起我就听说并学到了这是一个非常繁重的操作,每帧做几十次,所以我想知道我还能做些什么。

    我正在研究漫反射光照,但我不确定是否允许我为纹理添加不透明度。如果我为纹理添加50%不透明度的漫反射光,纹理是否会有50%的不透明度?

    赞赏任何指导,教程和示例代码更多:), Jengerer

1 个答案:

答案 0 :(得分:1)

我不这么认为 - 按照MSDN docs on D3D lighting

  

请注意,虽然Direct3D使用RGBA   灯光的值,alpha颜色   组件未使用。

编写着色器以调整每个顶点的颜色听起来就像你所追求的那样,它在GPU中运行,与修改CPU上的每个顶点相比,性能开销很小。网上有很多关于D3D的教程,例如

http://gpwiki.org/index.php/DirectX:Direct3D:Tutorials:Shaders_Introduction

http://www.toymaker.info/Games/html/shaders.html