@Override public NativeObject createDestructableClone() { return new Image(id); }
/** * Creates a new two-dimensional texture for the purpose of offscreen * rendering. * * @see com.jme3.texture.FrameBuffer * * @param width * @param height * @param format */ public Texture2D(int width, int height, Image.Format format){ this(new Image(format, width, height, null, ColorSpace.Linear)); }
/** * Creates a new three-dimensional texture for the purpose of offscreen * rendering. * * @see com.jme3.texture.FrameBuffer * * @param width * @param height * @param depth * @param format */ public Texture3D(int width, int height, int depth, Image.Format format) { this(new Image(format, width, height, depth, null, ColorSpace.Linear)); }
@Override public Image loadImage(final ByteBuffer imageData, final int imageWidth, final int imageHeight) { return new ImageImpl(new com.jme3.texture.Image(Format.RGBA8, imageWidth, imageHeight, imageData, ColorSpace.Linear)); }
private static Image createEmptyLayeredImage(int width, int height, int layerCount, Image.Format format) { ArrayList<ByteBuffer> layers = new ArrayList<ByteBuffer>(); for(int i = 0; i < layerCount; i++) { layers.add(null); } Image image = new Image(format, width, height, 0, layers, ColorSpace.Linear); return image; }
@Deprecated public static Image getPlaceholderImage(){ ByteBuffer tempData = BufferUtils.createByteBuffer(3 * 4 * 4); tempData.put(imageData).flip(); return new Image(Format.RGB8, 4, 4, tempData, null, ColorSpace.Linear); }
/** * This method creates a RGB8 texture with the sizes of 10x10x10 pixels. */ private Texture getTexture() throws IOException { ArrayList<ByteBuffer> data = new ArrayList<ByteBuffer>(1); ByteBuffer bb = BufferUtils.createByteBuffer(10 * 10 * 10 * 3);//all data must be inside one buffer for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10 * 10; ++j) { bb.put((byte) (255f*i/10f)); bb.put((byte) (255f*i/10f)); bb.put((byte) (255f)); } } bb.rewind(); data.add(bb); return new Texture3D(new Image(Format.RGB8, 10, 10, 10, data, null, ColorSpace.Linear)); } }
/** * Create an image with given parameters * @param nbSlices * @param byteBuffersSize * @param imgFormat * @param pixelWidth * @param pixelHeight * @param depth * @return */ private Image createImage(int nbSlices, int byteBuffersSize, Image.Format imgFormat, int pixelWidth, int pixelHeight, int depth) { ArrayList<ByteBuffer> imageData = new ArrayList<ByteBuffer>(nbSlices); for (int i = 0; i < nbSlices; i++) { imageData.add(BufferUtils.createByteBuffer(byteBuffersSize)); } Image image = new Image(imgFormat, pixelWidth, pixelHeight, depth, imageData, ColorSpace.sRGB); return image; }
/** * Converts java awt image to jme image. * @param bufferedImage * the java awt image * @param format * the result image format * @return the jme image */ private static Image toJmeImage(BufferedImage bufferedImage, Format format) { ByteBuffer byteBuffer = BufferUtils.createByteBuffer(bufferedImage.getWidth() * bufferedImage.getHeight() * 3); ImageToAwt.convert(bufferedImage, format, byteBuffer); return new Image(format, bufferedImage.getWidth(), bufferedImage.getHeight(), byteBuffer, com.jme3.texture.image.ColorSpace.Linear); } }
private Texture2D createAtlasTextureInternal(final int width, final int height) throws Exception { ByteBuffer initialData = BufferUtils.createByteBuffer(width*height*4); for (int i=0; i<width*height*4; i++) { initialData.put((byte) 0x00); } initialData.rewind(); Texture2D texture = new Texture2D(new com.jme3.texture.Image(Format.RGBA8, width, height, initialData, ColorSpace.sRGB)); texture.setMinFilter(MinFilter.NearestNoMipMaps); texture.setMagFilter(MagFilter.Nearest); return texture; }
/** * Creates a new two-dimensional texture for the purpose of offscreen * rendering. * * @see com.jme3.texture.FrameBuffer * * @param width * @param height * @param format * @param numSamples */ public Texture2D(int width, int height, int numSamples, Image.Format format){ this(new Image(format, width, height, null, ColorSpace.Linear)); getImage().setMultiSamples(numSamples); }
/** * Creates a new three-dimensional texture for the purpose of offscreen * rendering. * * @see com.jme3.texture.FrameBuffer * * @param width * @param height * @param format * @param numSamples */ public Texture3D(int width, int height, int depth, int numSamples, Image.Format format) { this(new Image(format, width, height, depth, null, ColorSpace.Linear)); getImage().setMultiSamples(numSamples); }
/** * Creates a new atlas texture for the given map name. * @param mapName * @return the atlas texture */ public Texture getAtlasTexture(String mapName) { if (images == null) { return null; } byte[] image = images.get(mapName); if (image != null) { //TODO check if color space shouldn't be sRGB Texture2D tex = new Texture2D(new Image(format, atlasWidth, atlasHeight, BufferUtils.createByteBuffer(image), null, ColorSpace.Linear)); tex.setMagFilter(Texture.MagFilter.Bilinear); tex.setMinFilter(Texture.MinFilter.BilinearNearestMipMap); tex.setWrap(Texture.WrapMode.EdgeClamp); return tex; } return null; }
public Image load(InputStream stream) throws IOException { in = new LittleEndien(stream); loadHeader(); ArrayList<ByteBuffer> data = readData(false); return new Image(pixelFormat, width, height, depth, data, sizes, ColorSpace.sRGB); }
private Image convertImageToAwt(Image source) { //use awt dependent classes without actual dependency via reflection try { Class clazz = Class.forName("jme3tools.converters.ImageToAwt"); if (clazz == null) { return null; } Image newImage = new Image(format, source.getWidth(), source.getHeight(), BufferUtils.createByteBuffer(source.getWidth() * source.getHeight() * 4), null, ColorSpace.Linear); clazz.getMethod("convert", Image.class, Image.class).invoke(clazz.newInstance(), source, newImage); return newImage; } catch (InstantiationException ex) { } catch (IllegalAccessException ex) { } catch (IllegalArgumentException ex) { } catch (InvocationTargetException ex) { } catch (NoSuchMethodException ex) { } catch (SecurityException ex) { } catch (ClassNotFoundException ex) { } return null; }
private Texture createTexture(String name) { ByteBuffer bb = BufferUtils.createByteBuffer(3); Image image = new Image(Format.RGB8, 1, 1, bb, ColorSpace.sRGB); Texture2D texture = new Texture2D(image); texture.setName(name); return texture; }
private Image convertImage(Image image, Format newFormat) { int width = image.getWidth(); int height = image.getHeight(); ByteBuffer data = BufferUtils.createByteBuffer( (int)Math.ceil(newFormat.getBitsPerPixel() / 8.0) * width * height); Image convertedImage = new Image(newFormat, width, height, data,null, image.getColorSpace()); ImageRaster sourceReader = ImageRaster.create(image); ImageRaster targetWriter = ImageRaster.create(convertedImage); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { ColorRGBA color = sourceReader.getPixel(x, y); targetWriter.setPixel(x, y, color); } } return convertedImage; }
public Object load(AssetInfo info) throws IOException { if (!(info.getKey() instanceof TextureKey)) { throw new IllegalArgumentException("Texture assets must be loaded using a TextureKey"); } InputStream stream = null; try { stream = info.openStream(); in = new LittleEndien(stream); loadHeader(); if (texture3D) { ((TextureKey) info.getKey()).setTextureTypeHint(Texture.Type.ThreeDimensional); } else if (depth > 1) { ((TextureKey) info.getKey()).setTextureTypeHint(Texture.Type.CubeMap); } ArrayList<ByteBuffer> data = readData(((TextureKey) info.getKey()).isFlipY()); return new Image(pixelFormat, width, height, depth, data, sizes, ColorSpace.sRGB); } finally { if (stream != null){ stream.close(); } } }
private static Texture2D createCheckerBoardTexture() { Image image = new Image(Format.RGBA8, 1024, 1024, BufferUtils.createByteBuffer(1024 * 1024 * 4), ColorSpace.sRGB); ImageRaster raster = ImageRaster.create(image); for (int y = 0; y < 1024; y++) { for (int x = 0; x < 1024; x++) { if (y < 512) { if (x < 512) { raster.setPixel(x, y, ColorRGBA.Black); } else { raster.setPixel(x, y, ColorRGBA.White); } } else { if (x < 512) { raster.setPixel(x, y, ColorRGBA.White); } else { raster.setPixel(x, y, ColorRGBA.Black); } } } } return new Texture2D(image); }
private Image createTestImage() { Image testImage = new Image(Format.BGR8, 4, 3, BufferUtils.createByteBuffer(4 * 4 * 3), null, ColorSpace.Linear); ImageRaster io = ImageRaster.create(testImage); io.setPixel(0, 0, ColorRGBA.Black); io.setPixel(1, 0, ColorRGBA.Gray); io.setPixel(2, 0, ColorRGBA.White); io.setPixel(3, 0, ColorRGBA.White.mult(4)); // HDR color io.setPixel(0, 1, ColorRGBA.Red); io.setPixel(1, 1, ColorRGBA.Green); io.setPixel(2, 1, ColorRGBA.Blue); io.setPixel(3, 1, new ColorRGBA(0, 0, 0, 0)); io.setPixel(0, 2, ColorRGBA.Yellow); io.setPixel(1, 2, ColorRGBA.Magenta); io.setPixel(2, 2, ColorRGBA.Cyan); io.setPixel(3, 2, new ColorRGBA(1, 1, 1, 0)); return testImage; }