private NiftyJmeDisplay( final AssetManager assetManager, final InputManager inputManager, final AudioRenderer audioRenderer, final ViewPort viewport, final BatchRenderConfiguration batchRenderConfiguration) { initialize(assetManager, inputManager, audioRenderer, viewport); this.renderDev = null; this.batchRendererBackend = new JmeBatchRenderBackend(this); nifty = new Nifty( new BatchRenderDevice(batchRendererBackend, batchRenderConfiguration), soundDev, inputSys, new AccurateTimeProvider()); inputSys.setNifty(nifty); resourceLocation = new ResourceLocationJme(); nifty.getResourceLoader().removeAllResourceLocations(); nifty.getResourceLoader().addResourceLocation(resourceLocation); }
final int textureHeight, final int textureId) { checkIfTextureChanged(textureId); beginNewBatchIfRequired(); renderBackend.addQuad( x, color3, color4, calcU(textureX, getFullWidthOfCurrentTexture()), calcU(textureY, getFullHeightOfCurrentTexture()), calcU(textureWidth - 1, getFullWidthOfCurrentTexture()), calcU(textureHeight - 1, getFullHeightOfCurrentTexture()), textureId); quadCount++;
@Nonnull final Color bottomLeft) { log.finest("renderQuad2()"); BatchRenderImage plainImage = getPlainImage(); addQuad( x, y, int ih = Math.round(h * scale); BatchRenderImage img = (BatchRenderImage) image; uploadImageInternal(img); addQuad(ix, iy, iw, ih, c, c, c, c, img.getX() + srcX, img.getY() + srcY, srcW, srcH, img.getTextureId());
config.atlasHeight = atlasHeight; BatchRenderDevice batchRenderDevice = new BatchRenderDevice(GdxBatchRenderBackendFactory.create(), config); batchRenderDevice.enableLogFPS();
@Nonnull private BatchRenderImage getPlainImage() { if (thePlainImage == null) { thePlainImage = (BatchRenderImage) createImage("de/lessvoid/nifty/render/batch/nifty.png", true); if (thePlainImage == null) { throw new RuntimeException("The batch renderer requires the plain image in the resources, but its not there."); } } uploadImageInternal(thePlainImage); return thePlainImage; }
public void resetTextureAtlases() { if (! renderConfig.disposeImagesBetweenScreens) { return; } log.finest("resetTextureAtlases()"); if (thePlainImage != null) { thePlainImage.unload(); } resetTextureAtlasGenerators(); clearTextureAtlases(); fontRenderer.unload(); }
@Override public void renderImage( @Nonnull final RenderImage image, final int x, final int y, final int width, final int height, @Nonnull final Color c, final float scale) { log.finest("renderImage()"); if (width < 0) { log.warning("Attempted to render image with negative width"); return; } if (height < 0) { log.warning("Attempted to render image with negative height"); return; } BatchRenderImage img = (BatchRenderImage) image; uploadImageInternal(img); float centerX = x + width / 2.f; float centerY = y + height / 2.f; int ix = Math.round(centerX - (width * scale) / 2.f); int iy = Math.round(centerY - (height * scale) / 2.f); int iw = Math.round(width * scale); int ih = Math.round(height * scale); addQuad(ix, iy, iw, ih, c, c, c, c, img.getX(), img.getY(), img.getWidth(), img.getHeight(), img.getTextureId()); }
@Override public void renderQuad( final int x, final int y, final int width, final int height, @Nonnull final Color color) { log.finest("renderQuad()"); BatchRenderImage plainImage = getPlainImage(); addQuad(x, y, width, height, color, color, color, color, plainImage.getX(), plainImage.getY(), plainImage.getWidth(), plainImage.getHeight(), plainImage.getTextureId()); }
/** * Enable the drawing of frames per second on the display surface. This will impact performance. Don't use in * production code. */ public void setDisplayFPS(final boolean newValue) { if (newValue != displayFPS) { displayFPS = newValue; if (resourceLoader != null && fpsFont == null && displayFPS) { fpsFont = createFont("fps.fnt"); } } }
@Override public void registerBitmap( @Nonnull final String bitmapId, @Nonnull final ByteBuffer data, final int width, final int height, @Nonnull final String filename ) throws IOException { BatchRenderImage batchRenderImage = null; BatchRenderBackend.Image image = renderBackend.loadImage(data, width, height); if (image != null) { batchRenderImage = new BatchRenderImage( image, filename, renderBackend, getCurrentTextureAtlasGenerator(), getCurrentAtlasTextureId(), renderConfig.disposeImagesBetweenScreens); } textureInfos.put(bitmapId, new BitmapInfo(batchRenderImage)); }
/** * This constructor is for more advanced users who wish to manually tune batch rendering for absolute maximum * performance. */ public BatchRenderDevice(@Nonnull final BatchRenderBackend renderBackend, @Nonnull final BatchRenderConfiguration renderConfig) { this.renderBackend = renderBackend; renderBackend.useHighQualityTextures(renderConfig.useHighQualityTextures); renderBackend.fillRemovedImagesInAtlas(renderConfig.fillRemovedImagesInAtlas); this.renderConfig = renderConfig; time = timeProvider.getMsTime(); fontRenderer = new FontRenderer(this); factory = new JGLFontFactory(fontRenderer, new ResourceLoader() { @Override public InputStream load(String path) { if (resourceLoader == null) { return null; } return resourceLoader.getResourceAsStream(path); } }); createInitialTextureAtlases(); }
addQuadInternal( x, y, clippedQuadTexture.set(clipping.clipQuadTexture(textureX, textureY, textureWidth, textureHeight, originalQuad, clippedQuad)); addQuadInternal( (float) clippedQuad.x0, (float) clippedQuad.y0,
@Override public void setResourceLoader(@Nonnull final NiftyResourceLoader resourceLoader) { log.finest("setResourceLoader()"); this.resourceLoader = resourceLoader; if (this.displayFPS) { fpsFont = createFont("fps.fnt"); } renderBackend.setResourceLoader(resourceLoader); }
new BatchRenderDevice(batchRendererBackend, batchRenderConfiguration), soundDev, inputSys,