- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在屏幕上绘制一个简单的字符串(覆盖)。
根据我在互联网上找到的内容,我是这样使用它的:
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) 处。但我只是需要这个字符串在二维窗口的 (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, 0.0, 0.0, 1.0 );
glScalef( scaleFactor, scaleFactor, scaleFactor );
glClear(GL_COLOR_BUFFER_BIT);
draw();
glFlush();
}
我也不太清楚它们的作用,我认为将文本绘制到世界坐标与这段代码中的某些内容有关。我也试过 Using GLUT bitmap fonts但它也不起作用。
我怎样才能简单地在屏幕上绘图。 OpenGL 过于复杂化了;我试着简单地写到窗口,但它需要整个东西并转化为 3D 世界。我只是不想这样。
最佳答案
从 twall,是的,你需要同时清除模型 View 和投影矩阵
//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, 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() ;
关于c++ - glutBitmapCharacter 位置文本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430852/
我正在尝试使用 OpenGL、FreeGlut 使用 glutBitmapCharacter() 进行简单的文本输出。我的问题是,我没有显示任何文字。三角形工作正常。我想问题不是 displayTex
#include "stdafx.h" #include #include #include #include "glut.h" int winWidth = 700; int winHeigh
我正在尝试在屏幕上绘制一个简单的字符串(覆盖)。 根据我在互联网上找到的内容,我是这样使用它的: void write(string text, int x, int y){ glRaster
我正在使用顶点和片段着色器,GLSL 版本 130。Ubuntu 12.04 LTS。着色器工作正常。照明被禁用。 glutBitmapCharacter() 可以正常绘制文本,但颜色无法预测。当我调
只是想知道是否有人可以帮助我使用以下代码来跟踪我的问题,即文本颜色设置不正确(它只是渲染背景中的任何颜色) void RenderText(int x, int y, const char *stri
我正在尝试增强 MoonLander 游戏程序 - 只是想更好地理解事物。 我想在燃油低于特定水平时添加警告,并且我希望该警告改变颜色。我的游戏循环以大约 30 帧/秒的速度运行。所以我创建了一个成员
当我尝试使用名为 drawText() 的函数绘制文本时,该函数运行顺利,但当它到达 glutBitmapCharacter(GLUT_BITMAP_9_BY_15, (int)text[i]); 时
我想做的是,当我绘制每个对象时,我检查它是否被标记,如果被标记,在对象附近写一些文本,使用 glRasterPos2f/i 在屏幕上设置位置,然后使用 glutBitmapCharacter . 对于
我想简单地在屏幕上写任何东西。绘制矩形很容易。我试图将文本字符串横向叠加在“书”上。看起来很简单,但是... 请注意,我尝试从这些论坛中获取建议,所以 glDisable(GL_DEPTH_TEST)
我正在开发一个 3D 应用程序,试图在屏幕上呈现一些文本。 但是如果文本超过 10 个字符,FPS 会下降到 2,这真的很烦人。 我的程序经常使用 glutPostRedisplay() 函数,这就是
我需要比 glutBitmapCharacter(font, text[i]) 更快的东西。它的性能下降了几次!我需要显示 fps、xyz 位置等,所以不是在 3D 中只显示 HUD。 目前我正在使用
我有一个在 SDL 下通过 freeglut 使用 OpenGL 的程序。 SDL/OpenGL初始化如下: // Initialize SDL SDL_Init(SDL_INIT_VIDEO); /
我是一名优秀的程序员,十分优秀!