我想在屏幕上爲我的遊戲寫文字,例如fps,物品和東西的隨機文本。我怎樣才能寫出這些文字?用LWJGL在屏幕上書寫文字
沒有基礎遊戲課程有可能嗎?沒有像這樣的命令g.drawString("Hello World", 100, 100);
?
我想在屏幕上爲我的遊戲寫文字,例如fps,物品和東西的隨機文本。我怎樣才能寫出這些文字?用LWJGL在屏幕上書寫文字
沒有基礎遊戲課程有可能嗎?沒有像這樣的命令g.drawString("Hello World", 100, 100);
?
更新:此答案現在已過時,並且根本不適用於最新版本的LWJGL。直到我完全更新這個答案,我建議你看看這裏:http://www.java-gaming.org/topics/lwjgl-stb-bindings/36153/view.html
您可以使用TrueType字體在Slick-util庫特徵。
使用一個共同的字體很容易,只要創建一個這樣的字體:
TrueTypeFont font;
Font awtFont = new Font("Times New Roman", Font.BOLD, 24); //name, style (PLAIN, BOLD, or ITALIC), size
font = new TrueTypeFont(awtFont, false); //base Font, anti-aliasing true/false
如果你想從.ttf
文件加載的字體,這是一個稍微棘手:
try {
InputStream inputStream = ResourceLoader.getResourceAsStream("myfont.ttf");
Font awtFont = Font.createFont(Font.TRUETYPE_FONT, inputStream);
awtFont = awtFont.deriveFont(24f); // set font size
font = new TrueTypeFont(awtFont, false);
} catch (Exception e) {
e.printStackTrace();
}
在成功創建TrueTypeFont
後,可以這樣繪製:
font.drawString(100, 50, "ABC123", Color.yellow); //x, y, string to draw, color
欲瞭解更多信息,你可以看看TrueTypeFont
和java.awt.Font
的文檔,以及我從這裏獲得了大部分代碼的Slick-Util tutorial。
你能否更新鏈接?他們已經過期。先謝謝你。 – IchHabsDrauf
@IchHabsDrauf謝謝你讓我知道;我會盡我所能。 –
我嘗試了你的兩條建議,但都沒有爲我工作。第一個是在窗口的指定位置打印一個黃色的Rect。我嘗試了第二個選項,通過從我的控制面板加載Consolas.ttf到我的項目文件夾中的一個目錄,並使用inputStream就像在你的例子,但它沒有奏效。它仍然畫了一個黃色雷克。我該怎麼辦? – IchHabsDrauf
嘗試製作所需尺寸的BufferedImage
。然後得到它的圖形並繪製一個字符串。然後將其轉換爲ByteBuffer
並將其呈現在OpenGL
中。
String text = "ABCD";
int s = 256; //Take whatever size suits you.
BufferedImage b = new BufferedImage(s, s, BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g = b.createGraphics();
g.drawString(text, 0, 0);
int co = b.getColorModel().getNumComponents();
byte[] data = new byte[co * s * s];
b.getRaster().getDataElements(0, 0, s, s, data);
ByteBuffer pixels = BufferUtils.createByteBuffer(data.length);
pixels.put(data);
pixels.rewind();
現在pixels
包含需要繪製所需的圖像數據。 使用GL11.glTexImage2D()
函數來繪製字節緩衝區。
你能解釋一下我們如何在這種情況下使用'glTexImage2D()'? – IchHabsDrauf
可否請你解釋一下在這種情況下我們如何使用'glTexImage2D()'? – IchHabsDrauf
LWJGL真的是OpenGL的一個很薄的包裝 - 如果你想做這樣的事情更簡單,我會建議像JMonkey這樣的提供場景圖API的東西。 – berry120
你是否在說如果我想寫文本,它會更好地轉向遊戲引擎? – Israelg99
你說你正在尋找一個簡單的'drawString()'類型方法,這意味着你想要簡單 - JMonkey在這方面(和其他許多方面)會使事情變得更簡單。 – berry120