opengl-es - 使用特定颜色将纹理绘制到 FrameBufferObject
问题描述
我有一个纹理,我想将它绘制到 FrameBufferObject。纹理具有透明区域。我想要以下内容:
- 对于所有透明像素,让它们在 FrameBufferObject 中绘制为透明。
- 对于所有不透明的像素,让它们使用我选择的颜色绘制,即纯红色(忽略它们的实际 rgb 值)
我Batch.setColor(red)
在绘制纹理之前尝试过,但这只是对其进行着色 - 我希望将所有非透明像素绘制成纯红色。
我也试图弄清楚如何直接在opengl中实现这一点,看起来可能有一种方法可以通过混合来做到这一点,然后可以将其与gdx相关联。
谢谢
解决方案
您需要编写一个着色器,着色器是渲染纹理的 OpenGL 程序。因此,您的着色器将在不改变的情况下渲染透明度,而其他所有内容都将是您自己选择的颜色。
以下链接具有用于调色板交换的 libgdx 着色器,即在渲染时直接重新分配颜色,您可以轻松地适应单一颜色和透明度。
推荐阅读
- javascript - react.js 的 this.setState() 是同步的还是异步的?
- tex - 我的 texStudio 安装中的自动字数统计 (autowc) 和 frontmatter 冲突
- sql - SQL 创建新表时自动忽略或删除重复列
- javascript - 带有 highcharts 的全屏面板引导程序(响应式)
- audio - 如何使用ffmpeg在特定时间向视频文件添加多个音频
- javascript - 像红宝石一样的Javascript字符串插值
- javascript - 即使在我的服务器上的简单情况下,Express.js 路由器也无法正常工作
- javascript - Slick - 幻灯片以 centerMode 和可变宽度跳跃
- laravel-5.5 - Auth::guard('memberweb')->user() 重定向后返回 null
- java - 如何“自动调整”javafx 中的类别轴标签?