如何在使用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. lwjgl和slick-util渲染文本
- 5. LWJGL&Slick2D 64位
- 6. 地图渲染错误slick2d
- 7. 使用LWJGL生成浮雕渲染?
- 8. LWJGL/Slick-Util渲染图
- 9. LWJGL纹理渲染不
- 10. 为什么不在窗口中渲染?
- 11. 在OpenGL中重新渲染vim窗口
- 12. SFML通过渲染窗口
- 13. GDI渲染到WPF窗口
- 14. Backgroundworker不能渲染窗口
- 15. 窗口拒绝渲染
- 16. C#窗口渲染PHP
- 17. 渲染彩色文本在Python ncurses的窗口
- 18. 在lwjgl中使用VBO进行2D渲染不会画出
- 19. 从Slick2D热插拔渲染方法
- 20. LWJGL 3D渲染不起作用
- 21. 如何在C中使用DirectX 9渲染多个窗口?
- 22. 在AS3中渲染文本
- 23. 将QT GUI渲染到SFML窗口中?
- 24. 如何在Slick2D/LWJGL或游戏编程中使用“delta”?
- 25. LWJGL:无法使用glfwCreateWindow创建窗口
- 26. OpenGL不渲染到Framebuffer而是渲染到窗口
- 27. LWJGL没有渲染三角形
- 28. LWJGL glTranslatef没有渲染深度
- 29. 文本不渲染在DIV
- 30. chrome中的文本渲染