Как нарисовать некоторые символы в прямоугольнике

Я использую следующую функцию, чтобы нарисовать строку в точке:

void print(std::string text,int x, int y)
{
glRasterPos2f(x,y);
int len =(int)text.size();
for (int i = 0; i < len; i++)
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,text[i]);
}
};

Теперь мне нужно нарисовать строку, не позволяя ей выйти за границы (прямоугольник).
Как мне это сделать?

Редактировать: я искал технику трафарета в OpenGL и изменил ее следующим образом:

void print(std::string text,Point point=Point(), Rectangle rect=Rectangle())
{
glRasterPos2f(point.x,point.y);
int len =(int)text.size();
if(!rect.isEmpty())
{
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_STENCIL_TEST);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glDepthMask(GL_FALSE);
glStencilFunc(GL_NEVER, 1, 0xFF);
glStencilOp(GL_REPLACE, GL_KEEP, GL_KEEP);
glStencilMask(0xFF);
glClear(GL_STENCIL_BUFFER_BIT);
rect.draw(GL_STENCIL);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDepthMask(GL_TRUE);
glStencilMask(0x00);
glStencilFunc(GL_EQUAL, 0, 0xFF);
glStencilFunc(GL_EQUAL, 1, 0xFF);
}
for (int i = 0; i < len; i++)
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,text[i]);
}
glDisable(GL_STENCIL_TEST);
};

Что касается Rectangle и Point, то они просто структуры, имеющие следующие переменные:

Point: GLfloat x,y,z
Rectangle : Size size, Point origin
Size: GLfloat width,height

Код не работает, если я пытаюсь нарисовать строку внутри прямоугольника, он не остается внутри прямоугольника.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]