gpt4 book ai didi

c++ - 3d 空间中的文本 - 如何回车? (openGL, C++, OSX)

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:47 25 4
gpt4 key购买 nike

这是我检测炸弹威胁的 if 语句(只是我正在制作的游戏)...

if (exodus2_bomb == 1)
{
float exodus2_theta_math = (exodus2_theta)/10.0*M_PI;
float exodus2_phi_math = (exodus2_phi)/10.0*2*M_PI;
r_exodus2_x = radius_exodus_pos * sin(exodus2_theta_math) * cos(exodus2_phi_math);
r_exodus2_y = radius_exodus_pos * sin(exodus2_theta_math) * sin(exodus2_phi_math);
r_exodus2_z = radius_exodus_pos * cos(exodus2_theta_math);

glPushMatrix();
glTranslatef(r_exodus2_x,r_exodus2_y,r_exodus2_z);
glColor3f (1.0, 0.0, 0.0);
glRasterPos3i(exodus2_x/10,exodus2_y/10,exodus2_z/10);
string exodus2 = "BOMB!!";
void * fontexodus2 = GLUT_BITMAP_HELVETICA_10;
for (string::iterator i = exodus2.begin(); i != exodus2.end(); ++i)
{
char c = *i;
glutBitmapCharacter(fontexodus2, c);
}
glEnd();
glPopMatrix();

glPushMatrix();
glTranslatef(r_exodus2_x,r_exodus2_y,r_exodus2_z);
glColor3f (1.0, 0.0, 0.0);
glRasterPos3i(exodus2_x/10,exodus2_y/10,exodus2_z/10);
string exodus2b = "\n THREAT LEVEL 1";
void * fontexodus2b = GLUT_BITMAP_HELVETICA_10;
for (string::iterator i = exodus2b.begin(); i != exodus2b.end(); ++i)
{
char c = *i;
glutBitmapCharacter(fontexodus2b, c);
}
glEnd();
glPopMatrix();
}

我想要的是“string exodus2”和“string exodus2b”之间的回车符。但是,它始终在一条线上。而且我没有屏幕上的房地产。

是否可以在我的字符串迭代器中的某处添加一个回车符?

不幸的是,在我移动相机时,乱用“glTranslatef”和“glRasterPos3i”只会导致两行文本之间的距离不一致。

最佳答案

您需要分别渲染每个字符串,并适当修改光栅位置以重置字符串的位置。如果您使用 glutBitmapHeight,您可以确定将光栅位置“向下”移动多远以模拟新行。

如果您希望字符串在 3D 中定位,但随后“表现”为它们在 2D 中被限制在同一平面上,您可以使用 glBitmap 命令修改光栅位置在屏幕空间。

int lineHeight   = glutBitmapHeight( font );  // number of pixels between "lines"
int stringLength = glutBitmapLength( font, s1 ); // returns length of string 1 in pixels

glutBitmap( 0, 0, 0, 0, -stringLength, lineHeight, NULL ); // move raster position
glutBitmapString( font, s2 );

glBitmap 的第五个和第六个参数控制光栅位置移动的距离。

或者,如果您希望这些字符串锚定在相对于窗口的位置,与 3D 空间中的一个点相比,请查看 glWindowPos

顺便说一句,所有这些函数都已在 OpenGL 3.0 中弃用,在 OpenGL 3.1 中被删除,除非您在 OpenGL 3.2 以上的版本中使用兼容性上下文。

关于c++ - 3d 空间中的文本 - 如何回车? (openGL, C++, OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14489670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com