如何在使用LWJGL的Display.Create()創建的窗口內使用Slick2D渲染基本字符串?在LWJGL窗口中使用Slick2D渲染文本?
0
A
回答
0
有沒有簡單的方法來做到這一點,但也有你可以使用的庫。在這裏尋找更多的信息:How to draw a String to the window with OpenGL?
0
聽起來你應該使用Slick2d的UnicodeFont
類。
隨着UnicodeFont
,你可以很容易地在屏幕上繪製不同顏色的文字。
初始化:
UnicodeFont uf = null;
try {
uf = new UnicodeFont("path/to/font", <size>, <bold>, <italic>);
uf.getEffects().add(new ColorEffect(java.awt.Color.white)); // set the default color to white
uf.addAsciiGlyphs();
uf.loadGlyphs(); // load glyphs from font file
} catch (SlickException exception) {
exception.printStackTrace();
}
繪製文本到屏幕上:
uf.drawString(<x>, <y>, <text>);
一定要將此代碼添加到您的OpenGL初始化:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
這確保了此將不會發生:
此外,如果啓用GL_DEPTH_TEST
,也會發生類似的問題。要解決此問題,請在屏幕上繪製文本時禁用GL_DEPTH_TEST
。
全部工作的字體繪圖程序:
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.UnicodeFont;
import org.newdawn.slick.font.effects.ColorEffect;
public class TextDrawing {
static UnicodeFont uf = null;
public static void initGL() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 480, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
@SuppressWarnings("unchecked")
public static void initFont(int size, boolean bold, boolean italic) {
try {
uf = new UnicodeFont("path/to/font.ttf", size, bold, italic);
uf.addAsciiGlyphs();
uf.getEffects().add(new ColorEffect(java.awt.Color.white));
uf.loadGlyphs();
} catch (SlickException e) {
}
}
public static void main(String[] args) {
try {
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setTitle("Text Drawing!");
Display.setResizable(false);
Display.create();
} catch (LWJGLException e) {
}
initGL();
initFont(100, false, false);
while (!Display.isCloseRequested()) {
glClear(GL_COLOR_BUFFER_BIT);
uf.drawString(10, 10, "Sweet Text");
Display.update();
Display.sync(60);
}
System.exit(0);
}
}
這將產生:
您需要提供一個字體文件。
相關問題
- 1. 在LWJGL中渲染文本
- 2. LWJGL使用slick-util渲染文本
- 3. 在lwjgl渲染中移動渲染器
- 4. Slick2D每0.8渲染
- 5. lwjgl和slick-util渲染文本
- 6. LWJGL慢速渲染
- 7. Java渲染LWJGL 3.0.0
- 8. LWJGL&Slick2D 64位
- 9. Java Slick2D&lwjgl
- 10. 地圖渲染錯誤slick2d
- 11. 使用LWJGL生成浮雕渲染?
- 12. 簡單LWJGL中的文本渲染導致其他代碼無法渲染
- 13. 在gtkglext窗口部件中渲染文本 - 從glut到pango
- 14. 爲什麼不在窗口中渲染?
- 15. 在OpenGL中重新渲染vim窗口
- 16. 窗口是在LWJGL
- 17. Java LWJGL高度圖渲染
- 18. LWJGL紋理不渲染
- 19. Lwjgl/Opengl字體渲染
- 20. LWJGL/Slick-Util渲染圖
- 21. LWJGL:渲染天空盒
- 22. LWJGL紋理渲染不
- 23. (LWJGL)如何渲染glBlendFunc()上
- 24. lwjgl和渲染到紋理
- 25. Directshow渲染窗口DLL,
- 26. GDI渲染到WPF窗口
- 27. Backgroundworker不能渲染窗口
- 28. 窗口拒絕渲染
- 29. SFML通過渲染窗口
- 30. C#窗口渲染PHP