我发布了一个关于在pixmap上绘制文本以在运行时生成动态纹理的问题,该问题已解决here
是否有一种简单的方法可以将我复制的字体着色到新的像素图,或者我是否需要逐像素地手动完成?我在libgdx库或Google上找不到任何明显的东西。
我目前的流程是:
在该过程中的某个时刻,我希望能够在运行时对字体进行着色。
更新了代码以测试Jyro117的答案。 (不工作,见下图)
// Set up the base image
Pixmap newPixmap = new Pixmap(backImage.getWidth(),
backImage.getHeight(), Format.RGBA8888);
newPixmap.drawPixmap(backImage, 0, 0);
// Copy out the letter from our fontsheet
// and draw the char to a new pixmap
Glyph glyph = fontData.getGlyph(getLetterToDraw().charAt(0));
Pixmap charPixmap = new Pixmap(glyph.width, glyph.height,
Format.RGBA8888);
charPixmap.drawPixmap(fontPixmap, 0, 0, glyph.srcX, glyph.srcY,
glyph.width, glyph.height);
// try to tint it?!
charPixmap.setColor(1, 0, 0, 100);
charPixmap.fillRectangle(0, 0, newPixmap.getWidth(),
newPixmap.getHeight());
// copy the character to our new bitmap
newPixmap.drawPixmap(charPixmap, (BLOCK_SIZE - glyph.width) / 2,
(BLOCK_SIZE - glyph.height) / 2);
texture = new Texture(newPixmap);
newPixmap.dispose();
charPixmap.dispose();
答案 0 :(得分:2)
Pixmap具有色调所需的所有功能。
希望能为你清除它。
修改:
好吧,所以我明白你究竟是什么意思,看来默认情况下没有办法改变Pixmap的混合'类型'。至少没有我查看封面下的本机代码。 BitmapFont通过使用字形的顶点数据来解决这个问题,并将每个数据渲染为形状而不是图像。所以为了做到这一点,你必须通过两次通过:
注意:您可以通过调用getPixel()来迭代像素数据,或者使用getPixels()获取Bytebuffer,第4个字节将是0到255之间的像素alpha值。
编辑2:
我只是想到另一种方法是使用Frame Buffer。