if (format != pixmap.getFormat()) { converted = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), format); converted.setBlending(Blending.None); converted.drawPixmap(pixmap, 0, 0); pixmap.dispose();
} else { facePixmap = new Pixmap(file); facePixmap.setBlending(Blending.None); facePixmap.setFilter(Filter.BiLinear); nLevels = 1; levelPixmap.setBlending(Blending.None); levelPixmap.setFilter(Filter.BiLinear); levelPixmap.drawPixmap(facePixmap, 0, 0, facePixmap.getWidth(), facePixmap.getHeight(), 0, 0, int w = levelPixmap.getWidth(), h = levelPixmap.getHeight(); Pixmap pm = new Pixmap(w, h * 2, levelPixmap.getFormat()); pm.setBlending(Blending.None); pm.setFilter(Filter.BiLinear); pm.drawPixmap(levelPixmap, 0, 0); System.out.println("Converting from " + levelPixmap.getFormat() + " to RGB888 for ETC1 compression"); Pixmap tmp = new Pixmap(levelPixmap.getWidth(), levelPixmap.getHeight(), Format.RGB888); tmp.setBlending(Blending.None); tmp.setFilter(Filter.BiLinear); tmp.drawPixmap(levelPixmap, 0, 0, 0, 0, levelPixmap.getWidth(), levelPixmap.getHeight());
} else { facePixmap = new Pixmap(file); facePixmap.setBlending(Blending.None); facePixmap.setFilter(Filter.BiLinear); nLevels = 1; levelPixmap.setBlending(Blending.None); levelPixmap.setFilter(Filter.BiLinear); levelPixmap.drawPixmap(facePixmap, 0, 0, facePixmap.getWidth(), facePixmap.getHeight(), 0, 0, int w = levelPixmap.getWidth(), h = levelPixmap.getHeight(); Pixmap pm = new Pixmap(w, h * 2, levelPixmap.getFormat()); pm.setBlending(Blending.None); pm.setFilter(Filter.BiLinear); pm.drawPixmap(levelPixmap, 0, 0); System.out.println("Converting from " + levelPixmap.getFormat() + " to RGB888 for ETC1 compression"); Pixmap tmp = new Pixmap(levelPixmap.getWidth(), levelPixmap.getHeight(), Format.RGB888); tmp.setBlending(Blending.None); tmp.setFilter(Filter.BiLinear); tmp.drawPixmap(levelPixmap, 0, 0, 0, 0, levelPixmap.getWidth(), levelPixmap.getHeight());
if (format != pixmap.getFormat()) { converted = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), format); converted.setBlending(Blending.None); converted.drawPixmap(pixmap, 0, 0); pixmap.dispose();
static void setIcon(long windowHandle, Pixmap[] images) { if (SharedLibraryLoader.isMac) return; GLFWImage.Buffer buffer = GLFWImage.malloc(images.length); Pixmap[] tmpPixmaps = new Pixmap[images.length]; for (int i = 0; i < images.length; i++) { Pixmap pixmap = images[i]; if (pixmap.getFormat() != Pixmap.Format.RGBA8888) { Pixmap rgba = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), Pixmap.Format.RGBA8888); rgba.setBlending(Pixmap.Blending.None); rgba.drawPixmap(pixmap, 0, 0); tmpPixmaps[i] = rgba; pixmap = rgba; } GLFWImage icon = GLFWImage.malloc(); icon.set(pixmap.getWidth(), pixmap.getHeight(), pixmap.getPixels()); buffer.put(icon); icon.free(); } buffer.position(0); GLFW.glfwSetWindowIcon(windowHandle, buffer); buffer.free(); for (Pixmap pixmap : tmpPixmaps) { if (pixmap != null) { pixmap.dispose(); } } }
static void setIcon(long windowHandle, Pixmap[] images) { if (SharedLibraryLoader.isMac) return; GLFWImage.Buffer buffer = GLFWImage.malloc(images.length); Pixmap[] tmpPixmaps = new Pixmap[images.length]; for (int i = 0; i < images.length; i++) { Pixmap pixmap = images[i]; if (pixmap.getFormat() != Pixmap.Format.RGBA8888) { Pixmap rgba = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), Pixmap.Format.RGBA8888); rgba.setBlending(Pixmap.Blending.None); rgba.drawPixmap(pixmap, 0, 0); tmpPixmaps[i] = rgba; pixmap = rgba; } GLFWImage icon = GLFWImage.malloc(); icon.set(pixmap.getWidth(), pixmap.getHeight(), pixmap.getPixels()); buffer.put(icon); icon.free(); } buffer.position(0); GLFW.glfwSetWindowIcon(windowHandle, buffer); buffer.free(); for (Pixmap pixmap : tmpPixmaps) { if (pixmap != null) { pixmap.dispose(); } } }
@Override public void consumeTextureArrayData () { for (int i = 0; i < textureDatas.length; i++) { if (textureDatas[i].getType() == TextureData.TextureDataType.Custom) { textureDatas[i].consumeCustomData(GL30.GL_TEXTURE_2D_ARRAY); } else { TextureData texData = textureDatas[i]; Pixmap pixmap = texData.consumePixmap(); boolean disposePixmap = texData.disposePixmap(); if (texData.getFormat() != pixmap.getFormat()) { Pixmap temp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), texData.getFormat()); temp.setBlending(Pixmap.Blending.None); temp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (texData.disposePixmap()) { pixmap.dispose(); } pixmap = temp; disposePixmap = true; } Gdx.gl30.glTexSubImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, pixmap.getWidth(), pixmap.getHeight(), 1, pixmap.getGLInternalFormat(), pixmap.getGLType(), pixmap.getPixels()); if (disposePixmap) pixmap.dispose(); } } }
@Override public void consumeTextureArrayData () { for (int i = 0; i < textureDatas.length; i++) { if (textureDatas[i].getType() == TextureData.TextureDataType.Custom) { textureDatas[i].consumeCustomData(GL30.GL_TEXTURE_2D_ARRAY); } else { TextureData texData = textureDatas[i]; Pixmap pixmap = texData.consumePixmap(); boolean disposePixmap = texData.disposePixmap(); if (texData.getFormat() != pixmap.getFormat()) { Pixmap temp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), texData.getFormat()); temp.setBlending(Pixmap.Blending.None); temp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (texData.disposePixmap()) { pixmap.dispose(); } pixmap = temp; disposePixmap = true; } Gdx.gl30.glTexSubImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, pixmap.getWidth(), pixmap.getHeight(), 1, pixmap.getGLInternalFormat(), pixmap.getGLType(), pixmap.getPixels()); if (disposePixmap) pixmap.dispose(); } } }
@Override public void create () { if (spriteBatch != null) return; spriteBatch = new SpriteBatch(); Matrix4 transform = new Matrix4(); transform.setToTranslation(0, Gdx.graphics.getHeight(), 0); transform.mul(new Matrix4().setToScaling(1, -1, 1)); spriteBatch.setTransformMatrix(transform); pixS1 = new Pixmap(Gdx.files.getFileHandle("data/test4.png", Files.FileType.Internal)); pixS2 = new Pixmap(Gdx.files.getFileHandle("data/test3.png", Files.FileType.Internal)); pixD = new Pixmap(512, 1024, Pixmap.Format.RGBA8888); pixD.setBlending(Pixmap.Blending.SourceOver); pixD.setFilter(Pixmap.Filter.NearestNeighbour); pixD.drawPixmap(pixS1, 0, 0, 38, 76, 0, 0, 512, 1024); pixD.drawPixmap(pixS2, 0, 0, 38, 76, 0, 0, 512, 1024); logoSprite = new Sprite(new Texture(pixD)); logoSprite.flip(false, true); pixS1.dispose(); pixS2.dispose(); pixD.dispose(); }
@Override public void consumeCubemapData () { for (int i = 0; i < data.length; i++) { if (data[i].getType() == TextureData.TextureDataType.Custom) { data[i].consumeCustomData(GL20.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i); } else { Pixmap pixmap = data[i].consumePixmap(); boolean disposePixmap = data[i].disposePixmap(); if (data[i].getFormat() != pixmap.getFormat()) { Pixmap tmp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), data[i].getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (data[i].disposePixmap()) pixmap.dispose(); pixmap = tmp; disposePixmap = true; } Gdx.gl.glPixelStorei(GL20.GL_UNPACK_ALIGNMENT, 1); Gdx.gl.glTexImage2D(GL20.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); if (disposePixmap) pixmap.dispose(); } } }
@Override public void consumeCubemapData () { for (int i = 0; i < data.length; i++) { if (data[i].getType() == TextureData.TextureDataType.Custom) { data[i].consumeCustomData(GL20.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i); } else { Pixmap pixmap = data[i].consumePixmap(); boolean disposePixmap = data[i].disposePixmap(); if (data[i].getFormat() != pixmap.getFormat()) { Pixmap tmp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), data[i].getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (data[i].disposePixmap()) pixmap.dispose(); pixmap = tmp; disposePixmap = true; } Gdx.gl.glPixelStorei(GL20.GL_UNPACK_ALIGNMENT, 1); Gdx.gl.glTexImage2D(GL20.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); if (disposePixmap) pixmap.dispose(); } } }
private static void generateMipMapCPU (int target, Pixmap pixmap, int textureWidth, int textureHeight) { Gdx.gl.glTexImage2D(target, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); if ((Gdx.gl20 == null) && textureWidth != textureHeight) throw new GdxRuntimeException("texture width and height must be square when using mipmapping."); int width = pixmap.getWidth() / 2; int height = pixmap.getHeight() / 2; int level = 1; while (width > 0 && height > 0) { Pixmap tmp = new Pixmap(width, height, pixmap.getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, pixmap.getWidth(), pixmap.getHeight(), 0, 0, width, height); if (level > 1) pixmap.dispose(); pixmap = tmp; Gdx.gl.glTexImage2D(target, level, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); width = pixmap.getWidth() / 2; height = pixmap.getHeight() / 2; level++; } } }
private static void generateMipMapCPU (int target, Pixmap pixmap, int textureWidth, int textureHeight) { Gdx.gl.glTexImage2D(target, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); if ((Gdx.gl20 == null) && textureWidth != textureHeight) throw new GdxRuntimeException("texture width and height must be square when using mipmapping."); int width = pixmap.getWidth() / 2; int height = pixmap.getHeight() / 2; int level = 1; while (width > 0 && height > 0) { Pixmap tmp = new Pixmap(width, height, pixmap.getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, pixmap.getWidth(), pixmap.getHeight(), 0, 0, width, height); if (level > 1) pixmap.dispose(); pixmap = tmp; Gdx.gl.glTexImage2D(target, level, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); width = pixmap.getWidth() / 2; height = pixmap.getHeight() / 2; level++; } } }
if (data.getFormat() != pixmap.getFormat()) { Pixmap tmp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), data.getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (data.disposePixmap()) {
if (data.getFormat() != pixmap.getFormat()) { Pixmap tmp = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), data.getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, 0, 0, pixmap.getWidth(), pixmap.getHeight()); if (data.disposePixmap()) {
page.dirty = true; page.image.setBlending(Blending.None);
page.dirty = true; page.image.setBlending(Blending.None);
// Initially, the mask should have an alpha of 1 Pixmap mask = new Pixmap(128, 128, Pixmap.Format.Alpha); // Cut a rectangle of alpha value 0 mask.setBlending(Pixmap.Blending.None); mask.setColor(new Color(0f, 0f, 0f, 0f)); mask.fillRectangle(0, 0, 32, 32); Pixmap fg = new Pixmap(Gdx.files.internal("foreground.png")); fg.drawPixmap(mask, fg.getWidth(), fg.getHeight()); mask.setBlending(Pixmap.Blending.SourceOver); Texture foreground = new Texture(fg); Texture background = new Texture("background.png");
public SplatMap(PixmapTextureAsset asset) { this.pixmapAsset = asset; this.pixmapAsset.getPixmap().setBlending(Pixmap.Blending.None); this.width = asset.getPixmap().getWidth(); this.height = asset.getPixmap().getHeight(); }
private static void generateMipMapCPU (int target, Pixmap pixmap, int textureWidth, int textureHeight) { Gdx.gl.glTexImage2D(target, 0, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); if ((Gdx.gl20 == null) && textureWidth != textureHeight) throw new GdxRuntimeException("texture width and height must be square when using mipmapping."); int width = pixmap.getWidth() / 2; int height = pixmap.getHeight() / 2; int level = 1; while (width > 0 && height > 0) { Pixmap tmp = new Pixmap(width, height, pixmap.getFormat()); tmp.setBlending(Blending.None); tmp.drawPixmap(pixmap, 0, 0, pixmap.getWidth(), pixmap.getHeight(), 0, 0, width, height); if (level > 1) pixmap.dispose(); pixmap = tmp; Gdx.gl.glTexImage2D(target, level, pixmap.getGLInternalFormat(), pixmap.getWidth(), pixmap.getHeight(), 0, pixmap.getGLFormat(), pixmap.getGLType(), pixmap.getPixels()); width = pixmap.getWidth() / 2; height = pixmap.getHeight() / 2; level++; } } }