English 中文(简体)
如何只使用开放式的GL方法起草案文?
原标题:How to draw text using only OpenGL methods?

我没有选择使用,而是开放式的GL方法(即<条码>glxxx()。 我只需要用冰川方法提取案文。 在阅读红皮书后,我的理解是,只有通过<条码>glBitmap()方法才能做到这一点。 如果这是唯一可能的办法,那么,任何人都能够帮助我掌握所有特性的星阵列信息。 是否还有其他方法可以起草案文?

问题回答

Theory

www.un.org/Depts/DGACM/index_spanish.htm 为什么难以做到。

诸如TrueType rel=“nofollow noretinger”>OpenTpey/a>是矢量提纲格式:它们使用

rel=“nofollow noretinger”> 图像来源

将这些格式转化为各种餐具(分类)过于具体,超出了开放式GL的范围,特别是因为开放式Gl没有排他性(例如见)。 为什么在开放的GL中没有任何圈子或草药?

最容易的做法是在万国邮联上先发弹,然后将各种ix子作为案文提供给开放式GL。

OpenGL then knows how to deal with arrays of pixels through textures very well.

Texture atlas

我们可以确定每个框架的特性,并重新确定案文,但这不是非常有效的,特别是如果特性有固定的规模的话。

更有效的做法是 you清你计划使用单一案文及其影响的所有特性。

之后,再一次向万国邮联转让,并使用它的案文,用 custom座坐标来选择正确的特性。

这种办法称为texture atlas,不仅可用于文字,而且可以用于其他反复使用的文字,如2D游戏或网络名称。

自行从自由型号中抽取全文的维基百科图很好地说明了这一点:

我怀疑,对最小案文问题的优化性安排是一个国家硬性的问题,见:。 可以用什么算法将不同大小的隔tang包装成尽可能最小的试金体?

同样的技术被用于网络开发,以便一劳永逸地传递几个小图像(如缩影),但是,它被称为“CSS Sprites”:。 并且被用来掩盖网络的相对性,而不是CPU/GPU的通信。

Non-CPU raster methods

There also exist methods which don t use the CPU raster to textures.

万国邮联的分类很简单,因为它尽可能少使用万国邮联,但我们也开始思考能否进一步利用万国邮联的效率。

This FOSDEM 2014 video explains other existing techniques:

www.un.org/Depts/DGACM/index_spanish.htm 3D 地理测量中,有“视角”栏目。

从3D地貌的地貌中(与一种 or子相比)放逐字体更为复杂,因为视角可能会使其中一部分特性更接近屏幕,而比另一部分更为广泛,使CPU的统一分化(例如,拉斯特、书店)在接近尾注。 这实际上是一个积极的研究专题:

“enterography

Distancefield 是目前受欢迎的技术之一。

Implementations

下面的例子都在乌班图15.10上测试。

由于这是先前所讨论的一个复杂的问题,大多数例子都是大的,将打破这一答案的30k char限额,因此,只能打上相应的吉特存放处汇编。

They are all fully open source however, so you can just RTFS.

www.un.org/Depts/DGACM/index_spanish.htm FreeType Solutions

https://en.wikipedia.org/wiki/FreeType”rel=“nofollow noreferer”>FreeType 如同主要的开放源真菌化图书馆一样,它使我们能够使用真真菌和开放式乐器,使之成为最明智的解决办法。

实例/辅导:

www.un.org/Depts/DGACM/index_spanish.htm 其他老年动物

这似乎不如“自由图瓦卢”那么好,但可能更轻重:

Anton s OpenGL 4 Tutorials example 26 “Bitmap fonts”

该字体由作者人工生成,并储存在一份<代码>png文档中。 信件存放在图像内的一个阵列。

这当然不是很笼统的,你很难实现国际化。

建设:

make -f Makefile.linux64

产出摘要:

“entergraph

opengl-tutorial chapter 11 "2D fonts"

文本来自DDS文档

The tutorial Interpretation how the DDS file were establishing, using CBFG and Paint.Net

产出摘要:

“在此处的影像描述”/</a

理由 Suzanne在我失踪,但工时罚款:

<>光临>

GLUT has glutStrokeCharacter and FreeGLUT is open source... https://github.com/dcnieho/FreeGLUT/blob/FG_3_0_0/src/fg_font.c#L255

<><>OpenGLText

https://github.com/tlorach/OpenGLText”rel=“nofollow noreferer”>https://github.com/tlorach/OpenGLText

MenType raster。 NVIDIA雇员。 重新使用的目标。 曾尝试过。

ARM Mali GLES SDK Sample

http://malideveloper.arm.com/resources/sample-code/simple-text-rendering/ 似乎把所有特性都编码在巴布亚新几内亚,并将其与该国割裂。

glText

https://github.com/vallentin/glText”rel=“nofollow noreferer”>https://github.com/vallentin/glText

Single header C library, that uses a bitmap font baked into the library.

<>Restrong>SDL_ttf

“enterography

资料来源:https://github.com/cirosantilli/cpp-cheat/blob/d36527fe49779ef4b885bec92bd0cd444a98/sdldf/ttc。

Lives in a separate tree to SDL, and integrates easily.

Does not provide a texture atlas implementation however, so performance will be limited: How to render fonts and text with SDL2 efficiently?

Related threads

简言之,在露天洛朗构体中提取案文就是一项平流的任务。 你或许应该对图书馆进行这方面的研究(无论是利用图书馆还是作为实例实施)。

某些良好的起点是:GLFont ,

请注意,像过去调查所述,光标并非在开放式GL中实现案文的唯一途径。

条描述了如何利用各种技术在开放式GL中形成案文。

仅使用开放式电话,有几种方式:

  • using glBitmap
  • using textures
  • using display lists

“entergraph

使用<代码>glutStrokeCharacter(GLUT_STROKE_ROMAN, myCharString)。

例如: A STAR WARS SCROLLER。

#include <windows.h>
#include <string.h>
#include <GLglut.h>
#include <iostream.h>
#include <fstream.h>

GLfloat UpwardsScrollVelocity = -10.0;
float view=20.0;

char quote[6][80];
int numberOfQuotes=0,i;

//*********************************************
//*  glutIdleFunc(timeTick);                  *
//*********************************************

void timeTick(void)
{
    if (UpwardsScrollVelocity< -600)
        view-=0.000011;
    if(view < 0) {view=20; UpwardsScrollVelocity = -10.0;}
    //  exit(0);
    UpwardsScrollVelocity -= 0.015;
  glutPostRedisplay();

}


//*********************************************
//* printToConsoleWindow()                *
//*********************************************

void printToConsoleWindow()
{
    int l,lenghOfQuote, i;

    for(  l=0;l<numberOfQuotes;l++)
    {
        lenghOfQuote = (int)strlen(quote[l]);

        for (i = 0; i < lenghOfQuote; i++)
        {
          //cout<<quote[l][i];
        }
          //out<<endl;
    }

}

//*********************************************
//* RenderToDisplay()                       *
//*********************************************

void RenderToDisplay()
{
    int l,lenghOfQuote, i;

    glTranslatef(0.0, -100, UpwardsScrollVelocity);
    glRotatef(-20, 1.0, 0.0, 0.0);
    glScalef(0.1, 0.1, 0.1);



    for(  l=0;l<numberOfQuotes;l++)
    {
        lenghOfQuote = (int)strlen(quote[l]);
        glPushMatrix();
        glTranslatef(-(lenghOfQuote*37), -(l*200), 0.0);
        for (i = 0; i < lenghOfQuote; i++)
        {
            glColor3f((UpwardsScrollVelocity/10)+300+(l*10),(UpwardsScrollVelocity/10)+300+(l*10),0.0);
            glutStrokeCharacter(GLUT_STROKE_ROMAN, quote[l][i]);
        }
        glPopMatrix();
    }

}
//*********************************************
//* glutDisplayFunc(myDisplayFunction);       *
//*********************************************

void myDisplayFunction(void)
{
  glClear(GL_COLOR_BUFFER_BIT);
  glLoadIdentity();
  gluLookAt(0.0, 30.0, 100.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  RenderToDisplay();
  glutSwapBuffers();
}
//*********************************************
//* glutReshapeFunc(reshape);               *
//*********************************************

void reshape(int w, int h)
{
  glViewport(0, 0, w, h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(60, 1.0, 1.0, 3200);
  glMatrixMode(GL_MODELVIEW);
}

//*********************************************
//* int main()                                *
//*********************************************


int main()
{
    strcpy(quote[0],"Luke, I am your father!.");
    strcpy(quote[1],"Obi-Wan has taught you well. ");
    strcpy(quote[2],"The force is strong with this one. ");
    strcpy(quote[3],"Alert all commands. Calculate every possible destination along their last known trajectory. ");
    strcpy(quote[4],"The force is with you, young Skywalker, but you are not a Jedi yet.");
    numberOfQuotes=5;

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(800, 400);
    glutCreateWindow("StarWars scroller");
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glLineWidth(3);

    glutDisplayFunc(myDisplayFunction);
    glutReshapeFunc(reshape);
    glutIdleFunc(timeTick);
    glutMainLoop();

    return 0;
}

视你想要的特性,拍摄带有文字特征的图像,并提取其中一部分。 您可以采用油漆方案、硬编码或使用窗户部分来绘制图像,并检索系统字体的确切复印件。

无需使用Glut或任何其他延伸,而只需要基本的开放式GL通用性。 它得到工作,更不用说,几十年来,专业方案人员在非常精选的游戏和其他应用中做了同样的工作。

我认为,在开放式GL中起草案文的最佳解决办法是文本字体,我与他们进行了长时间的合作。 它们是灵活的、快速的和公正的(除了某些后方例外)。 I use special programme for transformationing font file (.ttf for example) to texture, which is Save to file of some Internal "font" Format (I ve developed Format and program based on 不过,我的版本远非支持统法协会的原始编码。 在开始主要字体时,斜体从这一“内部”格式中装载。 见上文链接,以了解更多信息。

采用这种办法,主要指针是使用自由Type等特殊图书馆,这对我也是不受欢迎的。 正在使用标准开放式GL功能起草案文。





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签