pasjaonline.pl
lgbtx
lgbtx
lgbtx
lgbtx
Od podstaw – libGDX #1 | Grafika
autor

Szymon Nowak

date

Cześć! Witam Cię w następnym poradniku na temat frameworka libGDX. W poprzedniej części dowiedzieliśmy się między innymi:

  • co to jest libGDX
  • jak ściągnąć i zainstalować libGDX
  • jak utworzyć i zimportować projekt do Eclipse

Jeśli nie widziałeś poprzedniej części mojego kursu – zapraszam tutaj.

Dzisiaj dowiemy się jak dodawać do naszej gry obrazy a następnym razem jak obsługiwać input użytkownika. Zaczynajmy!

Na początku – przyjrzyjmy się naszemu kodowi:


package pl.pasjaonline.poradnik;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Gra extends ApplicationAdapter {

SpriteBatch batch;

Texture img;

   @Override

   public void create() {

    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");

   }

   @Override
   public void render() {

    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();
    batch.draw(img, 0, 0);
    batch.end();

   }

}

Jak widzisz, mamy w naszym projekcie 2 pola – SpriteBatch batch i Texture img.

SpriteBatch – najprościej można porównać do „puszki z farbą”. Dzięki niemu możemy „malować” wszystkie nasze obrazy na ekranie.

Texture – jest to nic innego jak jakaś tekstura (obrazek) która jest ładowana do pamięci GPU.

W metodzie create inicjujemy zarówno naszego SpriteBatch’a (batch) i Texture (img). Jak widzisz nasz img pobiera obraz „badlogic.jpg” – jest to nic innego jak logo twórców libGDX’a.

Przejdźmy do metody render.


   @Override
   public void render() {

    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();
    batch.draw(img, 0, 0);
    batch.end();

   }

Na samym początku widzimy czyszczenie ekranu za pomocą Gdx.gl.glClearColor. Jeśli chcemy zmienić tło naszego programu z (podstawowego) czerwonego zmieniamy wartości które dajemy tej funkcji. Warto wiedzieć, że jeżeli chodzi o kolory to 1 w libGDX reprezentuje 255 w modelu przestrzeni barw RGB – więc dajemy tej metodzie wartość od 0 (RGB – 0) do 1 (RGB – 255).

Dobra – co dalej? A no tutaj zaczynamy zabawę z naszym batchem – czyli „puszką z farbą”.

  • batch.begin(); – tutaj „otwieramy naszą puszkę”. Jeśli chcemy cokolwiek „namalować” na naszym ekranie, zawsze musimy poprzedzić to tą metodą.
  • batch.draw(…); – tutaj „malujemy”. Czyli dajemy batchowi (w naszym przypadku Texture img) obiekt który ma wyświetlić na ekranie oraz parametry x i y.
  • batch.end(); – a tu „zamykamy puszkę”. Po zakończeniu wszystkich metod draw(); zawsze wywołujemy end();.

Okej – teraz dodamy jeszcze jeden obraz na nasz ekran. Użyjemy grafiki która będzie za darmo do pobrania tutaj. Dodajemy ten plik do folderu „assets” w projekcie Poradnik-android

Najpierw dodajemy pole i inicjujemy je w metodzie create.

Texture pasja;

@Override
public void create() {

batch = new SpriteBatch();//inicjacja SpriteBatcha ("puszki z farbą")
img = new Texture("badlogic.jpg");//inicjujemy standartowy obraz
pasja = new Texture("pasja.jpg");//inicjujemy nasz obraz

}

A teraz rysujemy naszą teksturę w metodzie render.


@Override
public void render() {

Gdx.gl.glClearColor(1, 1, 1, 1); //czyszczenie ekranu, ja ustawilem na bialy
                                 //(czerwony, zielony, niebieski, przezroczystosc)
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

batch.begin();//początek SpriteBatcha
batch.draw(img, 0, 0);//rysowanie standartowego obrazka
batch.draw(pasja, 300, 250);//rysowanie naszego obrazka
batch.end();//koniec SpriteBatch'a

}

Trudne? Myślę, że nie 😉 W następnym poradniku dowiesz się jak obsługiwać input użytkownika i wykrywać kolizję. Do zobaczenia w następnej części kursu!