c – glutBitmapCharacter定位文本错误
发布时间:2020-12-16 09:40:44 所属栏目:百科 来源:网络整理
导读:我正在尝试在屏幕上绘制一个简单的字符串(叠加). 从我在互联网上发现的,我用这种方式: void write(string text,int x,int y){ glRasterPos2i(x,y); for(int i = 0; i text.length(); i++){ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12,text.data()[i]);
我正在尝试在屏幕上绘制一个简单的字符串(叠加).
从我在互联网上发现的,我用这种方式: void write(string text,int x,int y){ glRasterPos2i(x,y); for(int i = 0; i < text.length(); i++){ glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12,text.data()[i]); } } 但它根据世界坐标绘制字符串.比如说,如果x和y设置为10,它们将被绘制在世界的(10,10,0)坐标处.但我简单地需要在2D的窗口(10,10)坐标处使用此字符串. 这是一个小项目的一部分,绘制方法如下.我不想改变它,因为它可能会打破项目中的其他东西. void disp(){ // set viewing translation and object rotations glMatrixMode( GL_MODELVIEW ); glLoadIdentity (); glTranslatef( INIT_VIEW_X,INIT_VIEW_Y,INIT_VIEW_Z ); glRotatef( xRot,1.0,0.0,0.0 ); glRotatef( zRot,1.0 ); glScalef( scaleFactor,scaleFactor,scaleFactor ); glClear(GL_COLOR_BUFFER_BIT); draw(); glFlush(); } 我也不完全知道他们做了什么,我认为将文本绘制到世界坐标与此代码中的某些内容有关.我也试过Using GLUT bitmap fonts,但它也不起作用. 我怎样才能简单地绘制到屏幕上. OpenGL过度复杂化了;我试着简单地写到窗口,但它需要整个过程并转换为3D世界.我只是不想要这个. 解决方法
从twall,是的,您需要清除模型视图和投影矩阵
//TEXT glMatrixMode( GL_PROJECTION ) ; glPushMatrix() ; // save glLoadIdentity();// and clear glMatrixMode( GL_MODELVIEW ) ; glPushMatrix() ; glLoadIdentity() ; glDisable( GL_DEPTH_TEST ) ; // also disable the depth test so renders on top glRasterPos2f( 0,0 ) ; // center of screen. (-1,0) is center left. glColor4f(1.0f,1.0f,1.0f); char buf[300]; sprintf( buf,"Oh hello" ) ; const char * p = buf ; do glutBitmapCharacter( GLUT_BITMAP_HELVETICA_18,*p ); while( *(++p) ) ; glEnable( GL_DEPTH_TEST ) ; // Turn depth testing back on glMatrixMode( GL_PROJECTION ) ; glPopMatrix() ; // revert back to the matrix I had before. glMatrixMode( GL_MODELVIEW ) ; glPopMatrix() ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |