如何用delphi在openGL中呈现简单的2d文本?

如何用delphi在openGL中呈现简单的2d文本?,delphi,opengl,text,fonts,Delphi,Opengl,Text,Fonts,我试图找到一种在Delphi中在openGL表单上显示简单文本的方法。 我用标签试过了,但是没有出现。我猜openGL窗口是在它上面渲染的,所以我尝试调用Label1.BringToFront但这不起作用。 我还听说过一个名为freetype的库,但我找不到有关如何在Delphi中实现它的信息。 在Delphi中,在openGL表单上渲染文本的最简单方法是什么?最简单的方法是使用openGL的WglFontBitmap const numberchar =128 allocate: wgl

我试图找到一种在Delphi中在openGL表单上显示简单文本的方法。 我用标签试过了,但是没有出现。我猜openGL窗口是在它上面渲染的,所以我尝试调用
Label1.BringToFront但这不起作用。
我还听说过一个名为freetype的库,但我找不到有关如何在Delphi中实现它的信息。

在Delphi中,在openGL表单上渲染文本的最简单方法是什么?

最简单的方法是使用openGL的WglFontBitmap

 const numberchar =128
allocate:

 wglMakeCurrent(FDC, FRC);
 FFontBase := glGenLists(numberchar);
 SelectObject(FDC, FFont.Handle);                              
 wglUseFontBitmaps(FDC,0,128, FFontBase);                     


draw(atext:ansistring);
 glPushAttrib(GL_LIST_BIT);                             
 glListBase(FFontbase);  
  glCallLists(Length(aText), GL_UNSIGNED_BYTE, Pansichar(aText)); list
 glPopAttrib;                                           

free:
 glDeleteLists(FFontBase, numberchar); 
绘图代码只是部分代码。最好寻找类似代码的教程

注意,这只会给你基本的无标度字体。事实上,对于奇特的文本效果,freetype是最常见的方法

开始使用Delphi和opengl的好地方主要是德语,但也有一些英语板


另一种选择(假设您有D2010+)是朝DirectX的方向看。D2010+附带directx上下文组件。

-1因为它与Windows绑定,在现代OpenGL核心配置文件中不起作用。-1此外,窗口系统绑定不是OpenGL规范的一部分。它们是相关的,但核心规范既不指定GLX,也不指定WGL或AGL-更不用说EGL了。平心而论,FreeType是一个很好的提示,有几种使用lib的解决方案。如果实现是针对Delphi的,那么这些否决票的原因有点愚蠢。@MarcovandeVoort:Delphi与否,WGL字体位图将无法与现代OpenGL核心配置文件一起使用,因为所有与它们相关的函数都与之相关(glRasterPos、glDrawPixels、glBitmap)已经被删除。另外还有一个Linux的Delphi端口(Kylix/Lazarus)。Kylix已经死了近十年了,那个家伙说的是Delphi,不是Lazarus或Kylix。就配置文件而言,它在OpenGL3上下文中运行良好。所以我的回答是“最简单的”仍然是IMHO。但是,如果你提供了一个基于freetype的详细答案,这不会有什么坏处。在屏幕上绘制一个四边形,并将字母纹理映射到它。你可以用整个字体创建一个纹理,并修改四边形的UV以绘制正确的字母。对单词重复该顺序。