C++ Code:
template<typename... Args>
void Render::Print(float X, float Y, const char* Text, Args... args)
{
this->Print(X, Y, 1, 1, 1, Text, std::forward(args)...);
}
template<typename... Args>
void Render::Print(float X, float Y, float R, float G, float B, const char* Text, Args... args)
{
using namespace std;
std::size_t Position = 0;
std::string Container(Text);
std::vector<std::string> Arguments;
std::initializer_list<int> {(Arguments.push_back(to_string(args)), 0)...};
for (auto it = Arguments.begin(); it != Arguments.end(); ++it)
{
if ((Position = Container.find("%")) != std::string::npos)
{
Container.replace(Position, 1, *it);
}
}
glColor3f(R, G, B);
glRasterPos2f(X, Y);
glPushAttrib(GL_LIST_BIT);
glListBase(this->Base - 32);
glCallLists(Container.size(), GL_UNSIGNED_BYTE, Container.data());
glPopAttrib();
glFlush();
}