使用特定颜色将纹理绘制到 FrameBufferObject

问题描述

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

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

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

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

谢谢

解决方法

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

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

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