c++ - 没有顶点缓冲漫反射的着色纹理

标签 c++ direct3d

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

我以前让它工作过,但我这样做的方式是:

  1. 锁定顶点缓冲区。
  2. 改变每个顶点的漫反射颜色。
  3. 解锁顶点缓冲区。

从那时起我就听说并了解到这是一个非常繁重的操作,每帧要执行几十次,所以我想知道我还能怎么做。

我正在研究漫射照明,但我不确定这是否允许我为纹理添加不透明度。如果我向纹理添加不透明度为 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

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

关于c++ - 没有顶点缓冲漫反射的着色纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103153/

相关文章:

c++ - 如何确定安装了哪个版本的 Direct3D?

c++ - ID3D10Device::RSSetState 每帧调用?

c++ - 以大字体打印 "HELLO"?

C++ 本地范围以减少内存?

c++ - 基于c++中的多个字符串分隔符拆分字符串

opengl - 延迟着色抗锯齿

c++ - 是否存在返回 RValue 引用 (&&) 有用的情况?

c++ - 在类成员函数中创建一个动态数组

directx - 分支与纹理读取

c++ - 在 direct3d 应用程序中呈现格式化文本