首页 > 解决方案 > 使用特定颜色将纹理绘制到 FrameBufferObject

问题描述

我有一个纹理,我想将它绘制到 FrameBufferObject。纹理具有透明区域。我想要以下内容:

  1. 对于所有透明像素,让它们在 FrameBufferObject 中绘制为透明。
  2. 对于所有不透明的像素,让它们使用我选择的颜色绘制,即纯红色(忽略它们的实际 rgb 值)

Batch.setColor(red)在绘制纹理之前尝试过,但这只是对其进行着色 - 我希望将所有非透明像素绘制成纯红色。

我也试图弄清楚如何直接在opengl中实现这一点,看起来可能有一种方法可以通过混合来做到这一点,然后可以将其与gdx相关联。

谢谢

标签: opengl-eslibgdxblending

解决方案


您需要编写一个着色器,着色器是渲染纹理的 OpenGL 程序。因此,您的着色器将在不改变的情况下渲染透明度,而其他所有内容都将是您自己选择的颜色。

以下链接具有用于调色板交换的 libgdx 着色器,即在渲染时直接重新分配颜色,您可以轻松地适应单一颜色和透明度。

https://www.javaer101.com/en/article/12241616.html


推荐阅读