Решение:
strtod вместо atof решило это.Спасибо!
TODO: сделайте это ответом для принятия
Я загружаю значение из файла XML, который говорит, на сколько текстуру следует повернуть.
Это выглядит так:
string rotv = ItemElem->FirstChild("Rotation")->FirstChild()->Value();
rotation = -(atof(rotv.c_str()))*57.2957795;
В моем редакторе уровней текстуры вращаются правильно;пи равняется 180 градусам и так далее.Но в двигателе;это не так, кажется, что десятичные числа игнорируются.Так, например, текстура, которая должна быть повернута на 3,14 радиана, вращается только на 3 радиана и так далее.Я пробовал много разных подходов, чтобы убедиться, что десятичные дроби включены, но я не могу заставить его работать.
Я вращаю текстуры так:
glBindTexture(GL_TEXTURE_2D, texture->GetImage());
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(0.5, 0.5, 0);
glRotatef(rotation, 0, 0, 1);
glTranslatef(-0.5, -0.5, 0);
glMatrixMode(GL_PROJECTION);
Значение вXML-файл использует точку вместо комы, и я конвертирую ее следующим образом, я также храню десятичные дроби отдельно только для отладки.
for (int x = 0; x < rotv.size(); x++)
{
if (afterComa)
{
int temp = (int) rotv[x] - '0';
if (temp <10 && temp >= 0)
{
decimals[decimalPos] = temp;
decimalPos++;
}
else
{
break;
}
}
if (rotv[x] == '.')
{
rotv[x] = ',';
afterComa = true;
}
}
float decimalValue = десятичные числа [0] / 10 + десятичные числа [1] /100 + десятичные дроби [2] / 1000 + десятичные дроби [3] / 10000 + десятичные дроби [4] / 100000 + десятичные дроби [5] / 1000000;
Десятичные дроби сохраняются правильно, и я добавляю их к значению поворота, ноэто все еще не помогает.