替代glRotatef和glutBitmapCharacter?

时间:2012-09-27 20:17:10

标签: opengl 2d glut

这是我目前的代码。但是,对于我的生活,我无法让文字旋转。我是否需要使用除glutBitmapCharacter以外的其他东西?

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

的main.cpp

#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();
}

bookshelf.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();
}

2 个答案:

答案 0 :(得分:0)

是的。

glutBitmapCharacter()只是在屏幕上显示一个字符(注意调用glRasterPos2f())。

OpenGL中没有内置的3D字体支持,但是很多第三方API。请参阅此链接以获取摘要:OpenGL Fonts

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

答案 1 :(得分:0)

glutStrokeCharacter()一个镜头。

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