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