我正在编写一个简单的图像查看器,用于在 Android 上的 OpenGL ES 2.0 中的几个三角形上显示图像。这些图像中有一种特定的颜色,必须以某种方式替换为黑色。问题是,如果 GL_LINEAR 用于我的最小和最大化过滤器,则需要替换的颜色的轮廓仍然可见。如果我将 GL_NEAREST 用于我的过滤器,着色器可以轻松替换颜色,但是它不会将图像渲染得平滑,并且在放大和缩小时当然看起来像素化。
我想知道是否有更好的方法来执行此类任务。我的一些想法是:
- 构建另一个仅在纹理像素上运行一次并在我的片段着色器期间实际使用纹理之前替换颜色的着色器?
- 重写我的着色器,使其即使在使用 GL_LINEAR 时也能正常工作。
谁能给我任何关于这通常是如何完成的线索?我宁愿在着色器中执行此操作的原因是我可以确保遮罩像素颜色始终保持黑色。
我对 OpenGL ES 2.0 还是很陌生,但我正在尝试了解事情是如何工作的。请记住这一点,并帮助我学习。提前致谢。