@Override public void create () { Gdx.app.log("Multitouch", "multitouch supported: " + Gdx.input.isPeripheralAvailable(Peripheral.MultitouchScreen)); renderer = new ShapeRenderer(); camera = new OrthographicCamera(); viewport = new ScreenViewport(camera); Gdx.input.setInputProcessor(this); }
@Override public void update (int screenWidth, int screenHeight, boolean centerCamera) { setScreenBounds(0, 0, screenWidth, screenHeight); setWorldSize(screenWidth * unitsPerPixel, screenHeight * unitsPerPixel); apply(centerCamera); }
public ScreenViewport (Camera camera) { setCamera(camera); }
static public Array<Viewport> getViewports (Camera camera) { int minWorldWidth = 640; int minWorldHeight = 480; int maxWorldWidth = 800; int maxWorldHeight = 480; Array<Viewport> viewports = new Array(); viewports.add(new StretchViewport(minWorldWidth, minWorldHeight, camera)); viewports.add(new FillViewport(minWorldWidth, minWorldHeight, camera)); viewports.add(new FitViewport(minWorldWidth, minWorldHeight, camera)); viewports.add(new ExtendViewport(minWorldWidth, minWorldHeight, camera)); viewports.add(new ExtendViewport(minWorldWidth, minWorldHeight, maxWorldWidth, maxWorldHeight, camera)); viewports.add(new ScreenViewport(camera)); ScreenViewport screenViewport = new ScreenViewport(camera); screenViewport.setUnitsPerPixel(0.75f); viewports.add(screenViewport); viewports.add(new ScalingViewport(Scaling.none, minWorldWidth, minWorldHeight, camera)); return viewports; } }
@Override public void draw(Batch batch, float parentAlpha) { if (renderer == null || cam == null) return; // render part of the ui & pause rest batch.end(); vec.set(getOriginX(), getOriginY()); vec = localToStageCoordinates(vec); final int width = (int) getWidth(); final int height = (int) getHeight(); // apply widget viewport viewport.setScreenBounds((int) vec.x, (int) vec.y, width, height); viewport.setWorldSize(width * viewport.getUnitsPerPixel(), height * viewport.getUnitsPerPixel()); viewport.apply(); // render 3d scene renderer.render(cam); // re-apply stage viewport UI.INSTANCE.getViewport().apply(); // proceed ui rendering batch.begin(); }
@Override public void render() { viewport.apply(); Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(viewport.getCamera().combined); batch.begin(); renderTextureCentered(batch, nearest, viewport.getWorldWidth() * 1.5f / 6, viewport.getWorldHeight() * 1 / 2, SCALE); renderTextureCentered(batch, nearest, viewport.getWorldWidth() * 3 / 6, viewport.getWorldHeight() * 1 / 2, 1.0f); renderTextureCentered(batch, linear, viewport.getWorldWidth() * 4.5f / 6, viewport.getWorldHeight() * 1 / 2, SCALE); batch.end(); }
@Override public void render(float delta) { textViewport.apply(); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(textViewport.getCamera().combined); font.draw(batch, message, 40, textViewport.getWorldHeight() - 40); batch.end();
private void updateViewport() { viewport.setUnitsPerPixel(scale); ViewController currentController = interfaceService.getCurrentController(); if (currentController != null) { currentController.getStage().cancelTouchFocus(); } Gdx.app.postRunnable(new Runnable() { @Override public void run() { app.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); } }); } }
@Initiate(priority = VERY_HIGH_PRIORITY) void init() { prefs = Gdx.app.getPreferences(AppConstants.PREF_NAME_COMMON); scale = prefs.getFloat(PREF_KEY_UI_SCALE, scale); viewport = new ScreenViewport(); viewport.setUnitsPerPixel(scale); }
@Override public void render(float delta) { viewport.apply(); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(viewport.getCamera().combined); batch.begin(); font.draw(batch, "Hello from " + this.getClass().getSimpleName(), viewport.getWorldWidth() / 2, viewport.getWorldHeight() / 2, 0, Align.center, false); batch.end(); }
@Override public void render(float delta) { textViewport.apply(); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(textViewport.getCamera().combined); font.draw(batch, message, 40, textViewport.getWorldHeight() - 40); batch.end();
protected static void update(Scene scene) { if (scene.getViewport() instanceof ScreenViewport) { ((ScreenViewport)scene.getViewport()).setUnitsPerPixel(1f/Screen.getScale()); } scene.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true); scene.update(true); }
@Override public void create () { batch = new SpriteBatch(); texture = new Texture("data/badlogic.jpg"); region = new TextureRegion(texture); stage = new Stage(new ScreenViewport(), batch); Gdx.input.setInputProcessor(stage); skin = new Skin(Gdx.files.internal("data/uiskin.json")); skin.add("default", font = new BitmapFont(Gdx.files.internal("data/arial-32.fnt"), false)); populateTable(); Gdx.graphics.setContinuousRendering(false); Gdx.graphics.requestRendering(); }
@Override public void update (int screenWidth, int screenHeight, boolean centerCamera) { setScreenBounds(0, 0, screenWidth, screenHeight); setWorldSize(screenWidth * unitsPerPixel, screenHeight * unitsPerPixel); apply(centerCamera); }
@Override public void render(float delta) { // TODO: Apply the viewport viewport.apply(); // TODO: Set the clear color Gdx.gl.glClearColor(0, 0, 0, 1); // TODO: Clear the color buffer Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); // TODO: Set the SpriteBatch's projection matrix batch.setProjectionMatrix(viewport.getCamera().combined); // TODO: Begin a new batch batch.begin(); // TODO: Use delta to figure out the number of frames per second float fps = 1 / delta; // TODO: Use the BitmapFont to draw the FPS font.draw(batch, "FPS = " + fps, viewport.getWorldWidth() / 4, viewport.getWorldHeight() / 2); // TODO: End the batch batch.end(); } }
public ScreenViewport (Camera camera) { setCamera(camera); }
@Override public void create () { stage = new Stage(new ScreenViewport()); skin = new Skin(Gdx.files.internal("data/uiskin.json")); Gdx.input.setInputProcessor(stage);
@Override public void update (int screenWidth, int screenHeight, boolean centerCamera) { setScreenBounds(0, 0, screenWidth, screenHeight); setWorldSize(screenWidth * unitsPerPixel, screenHeight * unitsPerPixel); apply(centerCamera); }
public void setCam(PerspectiveCamera cam) { this.cam = cam; viewport.setCamera(cam); }
@Override public void create () { spriteBatch = new SpriteBatch(); // font = new BitmapFont(Gdx.files.internal("data/verdana39.fnt"), false); font = new BitmapFont(Gdx.files.internal("data/arial-32-pad.fnt"), false); // font = new FreeTypeFontGenerator(Gdx.files.internal("data/arial.ttf")).generateFont(new FreeTypeFontParameter()); font.getData().markupEnabled = true; font.getData().breakChars = new char[] {'-'}; multiPageFont = new BitmapFont(Gdx.files.internal("data/multipagefont.fnt")); // Add user defined color Colors.put("PERU", Color.valueOf("CD853F")); renderer = new ShapeRenderer(); renderer.setProjectionMatrix(spriteBatch.getProjectionMatrix()); stage = new Stage(new ScreenViewport()); Skin skin = new Skin(Gdx.files.internal("data/uiskin.json")); BitmapFont labelFont = skin.get("default-font", BitmapFont.class); labelFont.getData().markupEnabled = true; // Notice that the last [] has been deliberately added to test the effect of excessive pop operations. // They are silently ignored, as expected. label = new Label("<<[BLUE]M[RED]u[YELLOW]l[GREEN]t[OLIVE]ic[]o[]l[]o[]r[]*[MAROON]Label[][] [Unknown Color]>>", skin); label.setPosition(100, 200); stage.addActor(label); Window window = new Window("[RED]Multicolor[GREEN] Title", skin); window.setPosition(400, 300); window.pack(); stage.addActor(window); layout = new GlyphLayout(); }