Witam, pisze małą grę przy użyciu bibliotek Kryonet oraz LWJGL i napotkałem problem. Przy wyświetlaniu napisu dostaję tylko biały prostokąt... Sprawdzałem wiele różnych opcji dodawania napisu i niestety cały czas uzyskuję ten sam efekt. Może miał ktoś podobny problem.
package mygame;
import java.awt.Color;
import java.awt.Font;
import java.util.HashMap;
import java.util.Map;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.TrueTypeFont;
import com.esotericsoftware.kryonet.Listener;
public class ClientProgram extends Listener {
static Player player = new Player();
static Network network = new Network();
static Map<Integer, MPPlayer> players = new HashMap<Integer, MPPlayer>();
private static TrueTypeFont font;
private static Font awtFont;
public static void main(String[] args) throws Exception {
Display.setDisplayMode(new DisplayMode(512, 512));
Display.setTitle("Uciekaj albo giń!");
Display.create();
// Init GL
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, Display.getWidth(), 0, Display.getHeight(), -1, 1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
awtFont = new Font("Time News Roman", Font.BOLD, 24);
font = new TrueTypeFont(awtFont, true);
network.connect();
while (!Display.isCloseRequested()) {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glLoadIdentity();
update();
render(null, null);
Display.update();
Display.sync(60);
}
Display.destroy();
System.exit(0);
}
public static void update() {
player.update();
// Aktualizacja pozycji
if (player.networkPosition.x != player.position.x) {
// Wyslij pozycje X
PacketUpdateX packet = new PacketUpdateX();
packet.x = player.position.x;
network.client.sendUDP(packet);
player.networkPosition.x = player.position.x;
}
if (player.networkPosition.y != player.position.y) {
// Wyslij pozycje Y
PacketUpdateY packet = new PacketUpdateY();
packet.y = player.position.y;
network.client.sendUDP(packet);
player.networkPosition.y = player.position.y;
}
}
public static void render(GameContainer gc, Graphics g) {
// Renderowanie gracza
font.drawString(20.0f,20.0f,"Test drawing string.");
GL11.glColor3f(0, 0, 1);
GL11.glBegin(GL11.GL_TRIANGLE_FAN);
GL11.glVertex2f(player.position.x - 8, player.position.y - 8);
GL11.glVertex2f(player.position.x + 8, player.position.y + 8);
GL11.glVertex2f(player.position.x - 8, player.position.y + 8);
GL11.glVertex2f(player.position.x + 8, player.position.y - 8);
GL11.glEnd();
// Renderowanie innych graczy
GL11.glColor3f(1, 0, 0);
GL11.glBegin(GL11.GL_TRIANGLES);
for (MPPlayer mpPlayer : players.values()) {
if (player.position.x != mpPlayer.x || player.position.y != mpPlayer.y) {
GL11.glColor3f(1, 0, 0);
GL11.glBegin(GL11.GL_TRIANGLES);
GL11.glVertex2f(mpPlayer.x, mpPlayer.y + 8);
GL11.glVertex2f(mpPlayer.x + 8, mpPlayer.y - 8);
GL11.glVertex2f(mpPlayer.x - 8, mpPlayer.y - 8);
} else {
GL11.glColor3f(0, 1, 0);
GL11.glBegin(GL11.GL_TRIANGLES);
GL11.glVertex2f(mpPlayer.x, mpPlayer.y + 20);
GL11.glVertex2f(mpPlayer.x + 20, mpPlayer.y - 20);
GL11.glVertex2f(mpPlayer.x - 20, mpPlayer.y - 20);
Counter packet = new Counter();
packet.counter += 1;
network.client.sendTCP(packet);
}
}
GL11.glEnd();
}
}