Я хочу перевести, повернуть и масштабировать все эти преобразования из указанной точки (исходной точки). Это то, что я использую прямо сейчас (я перепробовал много комбинаций, но до сих пор не могу понять это! Похоже, я вернулся к изучению линейной алгебры для меня).
Я использую ГЛМ.
Взгляните на код, который я использую: -
GLfloat rx = sprite->origin.x / width;
GLfloat ry = sprite->origin.y / height;
translate(model, vec3( -sprite->origin.x, -sprite->origin.y, 0.0f ));
translate(model, vec3( rx * scale[0], ry * scale[1], 0.0f ));
rotate(model, radians(rotation), vec3( 0.0f, 0.0f, 1.0f ));
translate(model, vec3( -(rx * scale[0]), -(ry * scale[1]), 0.0f ));
scale(model, vec3( width * scale[0], height * scale[1], 1.0f ));
translate(model, vec3( position[0], position[1], 0.0f ));
Происхождение — это начальная точка объекта, затем переведите его в центр для вращения, а затем переведите обратно.
Масштабируйте его и переместите объект в указанное положение.
Я имею в виду, что не так с этим кодом?