当前位置: 首页 > 知识库问答 >
问题:

LWJGL 3.2.0字体

文英达
2023-03-14

我使用lwjgl已经有一段时间了,最近我决定从固定的函数管道切换到着色器。所以,当我开始我的程序的第一件事,我设置了ContextAttrib(3,2 ),所以我将使用GL 3.2。问题是,当我打开更高版本的GL时,很多功能变得不受支持。在切换到更高的GL之前,我已经使用Slick的字体(TrueTypeFont)来呈现我需要的文本,但是现在TrueTypeFont的drawString方法本身有一个不支持的函数。我试着在谷歌上搜索解决方案,但是没有任何结果。

有谁知道是否可以在使用GL版本3.2或其他库时使用光滑的util库来渲染文本?或有关该主题的任何链接。我将不胜感激任何帮助或建议。

编辑:用于启动openGL 3.2和更新的代码构成了wiki上的教程

try
    {
        PixelFormat pixelFormat = new PixelFormat();
        ContextAttribs contextAtrributes = new ContextAttribs(3, 2)
            .withForwardCompatible(true)
            .withProfileCore(true);

        Display.create(pixelFormat, contextAtrributes);
    } catch (LWJGLException e){
        e.printStackTrace();
        return;
    }

通过使用openGL 3.2或更高版本,您只能使用着色器。在UnicodeFont或TrueTypeFont上调用drawString时出现的异常,或任何其他固定函数管道函数,如GL11.glMatrixMode(GL11。GL _ PROJECTION);:

Exception in thread "Thread-0" java.lang.IllegalStateException: Function is not supported
at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:58)
at org.lwjgl.opengl.GL11.glColor4f(GL11.java:881)
at org.newdawn.slick.opengl.renderer.ImmediateModeOGLRenderer.glColor4f(ImmediateModeOGLRenderer.java:127)
at org.newdawn.slick.Color.bind(Color.java:182)
at org.newdawn.slick.UnicodeFont.drawDisplayList(UnicodeFont.java:443)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:551)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:559)
at org.newdawn.slick.UnicodeFont.drawString(UnicodeFont.java:555)
at application.Controller.render3D(Controller.java:163)
at Engine.Engine.renderScene3D(Engine.java:230)
at Engine.Engine.render(Engine.java:334)
at Engine.Engine.gameLoop(Engine.java:306)
at Engine.Engine.access$1(Engine.java:246)
at Engine.Engine$1.run(Engine.java:154)

谢谢。

共有1个答案

凤棋
2023-03-14

在GameDevSE上也弹出了一个类似的问题,您可能还想在这里查看

引用:

听起来您可能实际上没有请求适当版本的OpenGL上下文(即支持3.2的上下文)。为此,必须在调用Display.create()时提供请求所需版本的上下文属性

PixelFormat pixelFormat = new PixelFormat();
ContextAttribs contextAtrributes = new ContextAttribs(3, 2)
    .withForwardCompatible(true)
    .withProfileCore(true);

try {
      Display.setDisplayMode(new DisplayMode(320, 240));
      Display.setTitle("Version selection");
      Display.create(pixelFormat, contextAtrributes);
} catch (LWJGLException e) {
    e.printStackTrace();
    System.exit(-1);
}
 类似资料:
  • 显示文字是本书所要解决的首要问题,现在我们来研究Microsoft Windows中各种有效字体和字体大小的使用方法以及调整文字的方式。 Windows3.1发表的TrueType使程序写作者和使用者以灵活的方式处理文字的能力大幅增强。TrueType是轮廓字体技术,由AppleComputer公司和Microsoft公司开发,并被许多字体制造商支持。由于TrueType字体能够连续缩放,并能应用

  • 1. 前言 字体是丰富排版效果的主要方式。一篇文章中会通过不同的字体字号来区分文字的作用,例如使用「黑体」,「一号字」作为标题,使用「宋体」、「四号字」作为正文等。 Markdown 使普通文本具有格式,但它的原生语法并不支持修改字体、字号。为了实现丰富文字样式的需求,我们需要通过增加 HTML 标签实现此类效果。 环境说明: 考虑到 Markdown 工具之间的不兼容,有的内容直接从页面复制粘贴

  • 字体 待更新

  • ​字体是一整套具有相同设计特征的字形,系一个或多个字型的一个或多个尺寸的集合。在计算机中,字体也是包含一套字形和字符的电子数据文件,我们可以使用它们来改变界面中的文字显示效果。 LCUI 使用字体数据库和渲染引擎实现对字体的支持,前者用于加载和记录字体文件并缓存常用的文字位图数据,后者则用于根据字符码和选定的字型从已加载的字体文件中选取对应字形并栅格化成位图。

  • font(string $fontName): self string $fontName $format = new \Vtiful\Kernel\Format($fileHandle); $fontStyle = $format->font('FontName')->toResource();

  • 以前 CSS3 的版本,网页设计师不得不使用用户计算机上已经安装的字体。 使用 CSS3,网页设计师可以使用他/她喜欢的任何字体。 当你发现您要使用的字体文件时,只需简单的将字体文件包含在网站中,它会自动下载给需要的用户。 您所选择的字体在新的 CSS3 版本有关于@font-face规则描述。 您"自己的"的字体是在 CSS3 @font-face 规则中定义的。 注意:Internet Exp

  • 关于字体 字体是由一组具有相同粗细、宽度和样式的字符(字母、数字和符号)构成的完整集合,如 10 点 Adobe Garamond 粗体。 字形(通常称为文字系列或字体系列)是由具有相同整体外观的字体构成的集合,它们是专为一起使用而设计的,如 Adobe Garamond。 字体样式是字体系列中单个字体的变体。通常,字体系列的罗马体或普通(实际名称因字体系列而异)是基本字体,其中可能包括一些文字样

  • freetype 渲染引擎 作为 Xorg 服务器的一个模块,freetype 的功能包括读取 Truetype 字体信息,如大小、分辨率、编码等,并以之为依据渲染字体 - freetype2.x 相对于 freetype1.x 增加了抗锯齿等功能 - ( /etc/X11/xorg.conf 的 Module 字段中,可以选择字体渲染模块 ) freetype 只负责渲染字体。而查找字体,则可以