Skip to content

Rendering nella Hud

Abbiamo già parlato brevemente sul renderizzare cose sulla Hud nelle pagine Concetti di Rendering di base e Usare il Drawing Context,.

HudRenderCallback

L'evento HudRenderCallback - fornito da Fabric API - viene chiamato ogni frame, e viene usato per renderizzare cose sulla HUD.

Per registrare questi evento, puoi semplicemente chiamare HudRenderCallback.EVENT.register e passare una funzione lambda che prende come parametri DrawContext e float (deltaTick).

Il contesto di disegno (draw context) può essere usato per accedere a varie utilities per il rendering fornite dal gioco, ed accedere allo stack di matrici crude (raw matrix stack).

Dovresti dare un'occhiata alla pagina Draw Context per saperne di più riguardo al contesto di disegno.

DeltaTick

Il parametro deltaTick è il tempo trascorso dall'ultimo frame, in secondi. Questo può essere usato per fare animazioni e altri effetti basati sul tempo.

Esempio: Interpolare un Colore nel tempo

Diciamo che vuoi interpolare linearmente un colore nel tempo. Puoi usare il parametro deltaTick per farlo.

java
HudRenderCallback.EVENT.register((context, tickDelta) -> {
	int color = 0xFFFF0000; // Red
	int targetColor = 0xFF00FF00; // Green

	// Total tick delta is stored in a field, so we can use it later.
	totalTickDelta += tickDelta;

	// "lerp" simply means "linear interpolation", which is a fancy way of saying "blend".
	float lerpedAmount = MathHelper.abs(MathHelper.sin(totalTickDelta / 50F));
	int lerpedColor = ColorHelper.Argb.lerp(lerpedAmount, color, targetColor);

	// Draw a square with the lerped color.
	// x1, x2, y1, y2, z, color
	context.fill(0, 0, 100, 100, 0, lerpedColor);
});