OpenGL - 如果 alpha 不要写深度
OpenGL - don't write depth if alpha
我想在OpenGL中使用C++和GLSL做什么:当纹理具有 alpha 时 (texture.a! = 1.0;)则此像素不会写入深度缓冲区。(对于颜色缓冲区,它被写入)仅当像素纹理 .a == 1.0 时,才会出现写入深度;
在着色器中丢弃不是解决方案 - 则此像素不会写入颜色缓冲区。
有什么想法吗?
@UPDATE:示例:我有一些由OpenGL渲染的UI图像。其中一些在角落里有阿尔法。在场景渲染中,我有"深度预通道",通过不计算一些像素上的光线来节省一些像素。我还想让 UI 图像进入该预通道 - 但只能是完全不透明的像素(alpha = 1.0)。
正如Andon的评论中提到的:"当你写一个片段时,你总是必须写一个深度值,没有办法在着色器级别有选择地启用或禁用它。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- OpenGL在启用深度测试时不会丢弃我的碎片
- C++尝试深度复制唯一指针时出现内存访问冲突
- 试图找到二叉树的深度
- 操纵安卓相机的深度图导致应用程序崩溃
- 深度值没有意义 R200 相机
- 对如何制作双链表的深度副本感到困惑?
- 以C++访问 HoloLens 2 深度图像
- 在 c++ 中使用深度复制的运算符重载
- 如何深度复制链表对象指针
- 如何检查流中文件的下一个单词是否为 alpha?
- 提升图:当我的图使用 listS 作为 VertexList 时,如何调用深度优先搜索()?
- 在 OpenCV 中按深度维度排序,C++
- 关于 Direct3D9 中的 alpha 混合的问题
- 如何在编译时获得多维 std::vector 的深度?
- OpenCV java alpha Blending
- 需要帮助生成C++深度有限的随机表达式树
- C++ 可变参数模板实例化深度超过最大值 900
- Direct3d 11深度模板 / Alpha混合问题
- OpenGL - 如果 alpha 不要写深度