Render Texture in libGDX

TreCore

Mitglied
Hiho Guys ;)

fang ich direkt mal an ...
also hab ich erstmal folgende Klassen für Entitys und GameScreen
und nutze libGDX
Java:
class Entity extends Worldobject {
  public void update(float delta) { ... }
  public void render() { ... }
}
Java:
class GameScreen extends Screen {

  private SpriteBatch batch;

  public void create() {
    batch = new SpriteBatch();
  }

  public void render(float delta) {
    batch.begin();
    for(Entity e : entityList) {
      e.render();
    batch.end();
    }
  }
}
der rest der Klasse ist erstmal nicht wichtig ;) (das Entity.rendern kommt auch später in ne GameMatch-Klasse oder so ... habs erstmal vereinfacht darstellen wollen)
soo ich würde gerne das System für das Rendern bis hin zu TextureLoad machen...
nur weiß ich nicht wie ich vom Texturen laden zum Rendern kommen soll
Da ich keine globalen Texturen machen will wie public static Texture etc. hab ich das Problem das ich schlecht von der Entity Klasse aus schlecht an die Texturen komme ...
Ich könnte zwar die Textur private Texture in einem Entity coden und immer neu laden aber ... nä ^^
Gibt es da irgendein Schema das man machen könnte ?
Ich hatte einige Ideen ... aber die greifen jedes mal wieder auf globale Variablen zurück was ich vermeiden möchte ...
Hab auch andere Projekte angeschaut wie die das machen ... aber da hab ich auch nichts interessantes gefunden weil die beispiele meistens die einzelnen Objekte des GameScreens statisch festlegen ...
kann ich vll irgendwie ne ID für ne Texture nehmen und diese dann der Entity zuweisen und somit auch abfragen welche Textur gezeigt werden soll ? dann hätte ich alles Verkapselt und könnte alles locker in einer Texturenliste verwalten ... würde aber auch mehr zeit zum rendern verbrauchen weil er dann durch ne Liste erstmal gehen muss ...

Schon mal danke im vorraus ;)
 

Bananabert

Bekanntes Mitglied
Wenn du schon die Funktion "render" in deiner Entity-Klasse hast, warum lädst du nicht einfach die Textur in deiner Entity-Klasse ? Du brauchst doch nur einmal deine Textur für ein Objekt zu laden, und nicht jedes mal beim Zeichen.
Pseudo Bsp:
Java:
class Entity extends Worldobject {
	private Texture texture;
	public Entity() {
		texture = TextureUtil.load("MEIN/IMAGE/PFAD.jpg");
	}
	public void update(float delta) { ... }
	public void render() {
		grapics.drawTexture(texture);
	}
}
 
Zuletzt bearbeitet:

TreCore

Mitglied
Das meinte ich mit "jedes mal neu laden" ^^
Ich glaub ich hab mich da ein wenig zu ungenau ausgedrückt
ich möchte nicht im Konstruktor die Texture jedes mal neu laden wenn ich ein Entity generiere :D
Die Texture soll insgesamt bei 100 Entities nur 1 mal geladen werden
Dabei sollen die Texturen nicht über globale Variablen verfügbar sein sonder schön alles eingekapselt

PS: Ich frag mich gerade warum ich das nicht so von anfang an erklärt hab :oops:
 
Zuletzt bearbeitet:

Bananabert

Bekanntes Mitglied
Dann erstellst du dir eine Klasse, die dir deine Texturen lädt. Die Texturen könntest du z.B. in einer HashMap speichern mit entweder int/string als Key.
Deinen Entity-Klassen gibst du diese Klasse mit, sodass diese sich ihre Textur von deiner Texturen-Klasse holen können.
 

InfectedBytes

Top Contributor
Für sowas ist der AssetManager gedacht. Der kümmert sich darum das Assets nicht mehrmals geladen werden müssen.
In deiner create-Methode erzeugst du deinen AssetManager:
Java:
AssetManager assets = new AssetManager();
assets.load("bildXYZ.png", Texture.class);
In deiner update-Methode solltest du den AssetManager selbst noch updaten und erst wenn dieser alles geladen hat weitermachen.
Java:
if(!assets.update()) {
  //render loading screen
}

Den AssetManager kannst du anschließend beim erzeugen deiner Entities dem Konstruktor mitgeben und dort dann die Texturen holen:
Java:
public Entity(AssetManager assets) {
  Texture tex = assets.get("bildXYZ.png", Texture.class);
}

Der AssetManager zählt intern für jedes Asset mit, wie oft es genutzt wird und entlädt es erst, wenn es nicht mehr benötigt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
X [LWJGL] Binden von Texturen per PNG File und Texture Sheet Spiele- und Multimedia-Programmierung 1
O OpenGL - Texture falsch herum Spiele- und Multimedia-Programmierung 3
CookieSoft Slick und LWJGL Texture lag Spiele- und Multimedia-Programmierung 13
CookieSoft Slick Texture laden Fehler Spiele- und Multimedia-Programmierung 6
C Java3D Texture Mapping Spiele- und Multimedia-Programmierung 2
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
S Texture Koordinaten Spiele- und Multimedia-Programmierung 2
J Java3D: Texture-Frage Spiele- und Multimedia-Programmierung 4
O Libgdx - Wiedergabe von Bildschirmgröße ist falsch Spiele- und Multimedia-Programmierung 0
L LibGDX - Verschiedene Layouts bei Android / Desktop Spiele- und Multimedia-Programmierung 1
L LibGDX - Ordentliche Größenänderung Spiele- und Multimedia-Programmierung 2
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
J Kollision (libgdx) Spiele- und Multimedia-Programmierung 2
V Ist LibGDX bei der aktuellen Oracle-Strategie noch die richtige Wahl? Spiele- und Multimedia-Programmierung 9
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
H LibGdx SocketExeption: Connection reset Spiele- und Multimedia-Programmierung 1
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
Kim_Dotcom libGDX - opengl Fehler Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
G [LibGDX] Button Klick Probleme Spiele- und Multimedia-Programmierung 1
K LibGdx, Loadingscreen & Opengl context Spiele- und Multimedia-Programmierung 3
K [LibGDX] Alphakanal übernehmen Spiele- und Multimedia-Programmierung 1
W [libGDX] findet SplashScreen.png nicht Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben