我目前正在开发一个二维 Direct3D 应用程序,我正在尝试弄清楚如何正确地将色调和 alpha 效果添加到不同的纹理。
我以前让它工作过,但我这样做的方式是:
- 锁定顶点缓冲区。
- 改变每个顶点的漫反射颜色。
- 解锁顶点缓冲区。
从那时起我就听说并了解到这是一个非常繁重的操作,每帧要执行几十次,所以我想知道我还能怎么做。
我正在研究漫射照明,但我不确定这是否允许我为纹理添加不透明度。如果我向纹理添加不透明度为 50% 的漫射光,纹理是否会具有 50% 的不透明度?
感谢任何指导,教程和示例代码更是如此:),
詹格勒
最佳答案
我不这么认为 - 根据 MSDN docs on D3D lighting :
Note that although Direct3D uses RGBA values for lights, the alpha color component is not used.
编写一个着色器来调整每个顶点的颜色听起来就像您所追求的那样,它在 GPU 中运行,与在 CPU 上修改每个顶点相比,性能开销很小。网络上有很多关于 D3D 的教程,例如
http://gpwiki.org/index.php/DirectX:Direct3D:Tutorials:Shaders_Introduction
关于c++ - 没有顶点缓冲漫反射的着色纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103153/