如何让OpenGL在我想要的位置绘制角色
How can I get OpenGL to draw the character at the location I want?
我目前正在openGL中绘制文本到屏幕上。我有一个函数,只要我不希望文本跨越多行,并且我真的希望文本是绿色的,它就可以工作。显然,这并不理想。我目前使用的功能是:
void Scene::DrawString(std::string text, position pos)
{
void* font = GLUT_BITMAP_HELVETICA_12;
float rightOfScreen = glutGet(GLUT_WINDOW_WIDTH);
std::vector<std::string> sentence = split(text, ' ');
glRasterPos2f(pos.x, pos.z);
glColor3i(0, 0, 0); //Black text
double rasterPosition[4]; //GL raster position returns 4 doubles. It just does, and it needs to go into an array
for (auto word : sentence)
{
int wordWidth = 0;
for (char c : word)
{
wordWidth += glutBitmapWidth(font, c);
}
glGetDoublev(GL_CURRENT_RASTER_POSITION, rasterPosition);
if (rasterPosition[0] + wordWidth > rightOfScreen)
{
pos.z += 1;
glRasterPos2d(pos.x, pos.z);
}
for (char c : word)
{
glutBitmapCharacter(font, c);
}
glutBitmapCharacter(font, ' ');
}
}
(Position是一个有两个浮点的结构-x和z)
当我传入一个应该被包装到下一行的字符串时,它正确地检测到了单词何时应该被推送,但glRasterPos2d只是将第二部分覆盖在第一部分的顶部(以及修复颜色问题,即它被渲染为绿色而不是黑色)。
我的问题是;我该如何做相当于放入换行符的操作?
您没有。
以与渲染第一行相同的方式渲染第二行,但要低一点。低多少取决于你的字体高度和你想要的行填充量。
在这个级别上,您负责编写"换行"语义!
相关文章:
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 在不同位置绘制多次glbatch
- QGraphicsScene项目在两次(x2)位置绘制
- SFML 将形状绘制到屏幕上的多个位置
- SFML参考窗口在绝对位置绘制
- 如何在 MFC 中围绕当前光标的位置绘制一个矩形
- (C++)在圆内夹紧 2D 位置(使用中点圆算法绘制)
- C++绘制矩形位置
- C++ SDL 根据鼠标位置绘制动态矩形
- 在3D世界中的显示器上固定位置绘制2D文本-OpenGL
- 如何将顶点位置传递给顶点着色器.我写了一个着色器,它不会在屏幕上绘制任何内容
- TMX问题,在正确位置绘制瓷砖(c++)
- 未在指定位置绘制的精灵
- OpenGL 形状仅在初始位置为 (0, 0, 0) 时绘制
- C++:如何在命令提示符的特定位置绘制ASCII字符
- 如何让OpenGL在我想要的位置绘制角色
- 绘制多个网格到不同的位置(DirectX 12)
- 如何使用opencv获取位置并绘制矩形
- OpenGL如何知道它应该基于GL_ARRAY_BUFFER绘制顶点到什么位置
- 无法在屏幕上的所需位置绘制矩形