2

这就是我目前的代码。但是,对于我的生活,我无法让文本旋转。我需要使用 glutBitmapCharacter 以外的东西吗?

澄清一下,这只是一个 2D 程序

主文件

#include "bookshelf.h"

void Initialize()
{
    glClearColor (1.0, 1.0, 1.0, 0.0 );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho(0,799,799,0,0.0,1.0);
}
void main( int argc, char *argv[] )
{    
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
    glutInitWindowSize( 800, 800 );
    glutInitWindowPosition( 200, 50 );
    glutCreateWindow("Bookshelf - Ankit Ahuja");
    Initialize();
    glutDisplayFunc(Bookshelf);
    glutMainLoop();
}

书架.h

#include <GL/glut.h>

void Bookshelf()
{
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

    glColor3f( 0.0, 0.0, 0.0 );
    glRasterPos2f(170,90);
    glRotatef(0,0.0,0.0,0.0);
    char text1[50]="Apple Recipe Book";
    for(int i=0; i<50; i++) glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text1[i]);
    glRasterPos2f(190,110);
    glRotatef(0,0.0,0.0,0.0);
    char text2[50]="Banana Recipe Book";
    for(int i=0; i<50; i++) glutBitmapCharacter(GLUT_BITMAP_8_BY_13,text2[i]);

    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
}
4

2 回答 2

0

试一试glutStrokeCharacter()

或者使用glutBitmapCharacter()和您选择的渲染到纹理方法。然后以你想要的任何方向用你的纹理渲染一个四边形。

于 2012-09-27T20:26:04.020 回答
0

是的。

glutBitmapCharacter() 只是要在屏幕上喷出一个字符(注意对 glRasterPos2f() 的调用)。

OpenGL 中没有对 3D 字体的内置支持,但有很多 3rd 方 API。有关摘要,请参见此链接:OpenGL 字体

我不喜欢只是粘贴链接,但我确实使用了列出的 FreeType2 库,而且我已经取得了很好的成功。

于 2012-09-27T20:23:02.183 回答