Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 简单的2D应用程序,无法使用BitMapCharacter_C++_Opengl_Glut - Fatal编程技术网

C++ 简单的2D应用程序,无法使用BitMapCharacter

C++ 简单的2D应用程序,无法使用BitMapCharacter,c++,opengl,glut,C++,Opengl,Glut,我试着在屏幕上写任何东西。画矩形很容易。我试图把一个文本字符串横向叠加在一本“书”上。这看起来很简单,但 作为一个提示,我试图从这些论坛上听取建议,所以glDisable(GL\u DEPTH\u TEST)和glDisable(GL_照明)可能不是必需的。此外,是否有一种方法可以让自己调试?我通常喜欢添加cout在显示文本之前,您应该使用glOrtho设置正交投影 在编写您的文本之前,请确保正确推/弹出投影和模型视图矩阵,以便查看以下内容: glMatrixMode(GL_PROJECTION

我试着在屏幕上写任何东西。画矩形很容易。我试图把一个文本字符串横向叠加在一本“书”上。这看起来很简单,但


作为一个提示,我试图从这些论坛上听取建议,所以
glDisable(GL\u DEPTH\u TEST)
glDisable(GL_照明)可能不是必需的。此外,是否有一种方法可以让自己调试?我通常喜欢添加
cout在显示文本之前,您应该使用
glOrtho
设置正交投影

在编写您的文本之前,请确保正确推/弹出投影和模型视图矩阵,以便查看以下内容:

glMatrixMode(GL_PROJECTION);    //Select projection matrix
glPushMatrix();                 //save it
glLoadIdentity();                               

glMatrixMode(GL_MODELVIEW);    //Select modelview matrix
glPushMatrix();                //save it
glLoadIdentity();          

// set up ur glOrtho
glOrtho(...);

glutBitmapCharacter(...)                  

glMatrixMode(GL_PROJECTION);
glPopMatrix();                //Restore your old projection matrix

glMatrixMode(GL_MODELVIEW);
glPopMatrix();               //Restore old modelview matrix

请正确格式化你的代码你能在屏幕上画什么?你到底想画什么?如果你提供一些小的缩略图(甚至是手绘的),说明什么是画的,什么不是画的,这将更好地表明你有什么问题。我可以毫无问题地画所有的矩形,并按预期填充它们,我只是停留在文本部分。是我可以成功创建的项目的一部分更新:文本显示,但仍然没有正确旋转。此操作已成功。但是,您知道我现在如何旋转文本字符串吗?如果需要,请围绕视图轴使用glRotatef。不幸的是,任何形式的glRotatef都不起作用。在做了更多的研究之后,我不确定这是否可能。是否有一个替代将旋转的glutBitmapCharacter的方法?好的,我发现这是不可能的;尝试改用自由字体。关于这一点,nehe上有一个啧啧称奇,你可能会在谷歌上找到一些最近的啧啧称奇
#include <GL/glut.h>  

void Bookshelf()
{
    glClear( GL_COLOR_BUFFER_BIT );
    glColor3f( 0.0, 0.0, 0.0 );
    glBegin( GL_QUADS );

    //Code that draws a bookshelf
    //Book1
    glColor3f( 1.0, 0.25, 0.25 );
    glVertex3i(240,70,0.5);
    glVertex3i(260,70,0.5);
    glVertex3i(260,180,0.5);
    glVertex3i(240,180,0.5);

    //BookTitle1
    glPushMatrix();
    glLoadIdentity();
    glDisable(GL_DEPTH_TEST);
    glRotatef(90f,0.0f,0.0f,0.0f);
    glColor3f( 0.0, 1.0, 0.0 );
    glDisable(GL_LIGHTING);
    glRasterPos3i(100,100,1);

    char text[50]="Alphabet Soup is the best guys";
    for(int i=0; i<50; i++) 
    {
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15,(int)text[i]);
    }
    glPopMatrix();

    //Book2
    glColor3f( 0.8, 0.8, 0.0 );
    glVertex2i(270,70);
    glVertex2i(290,70);
    glVertex2i(290,180);
    glVertex2i(270,180);

    //More books and shelves
    glEnd();
    glFlush();
}
glMatrixMode(GL_PROJECTION);    //Select projection matrix
glPushMatrix();                 //save it
glLoadIdentity();                               

glMatrixMode(GL_MODELVIEW);    //Select modelview matrix
glPushMatrix();                //save it
glLoadIdentity();          

// set up ur glOrtho
glOrtho(...);

glutBitmapCharacter(...)                  

glMatrixMode(GL_PROJECTION);
glPopMatrix();                //Restore your old projection matrix

glMatrixMode(GL_MODELVIEW);
glPopMatrix();               //Restore old modelview matrix