Вам нужны две точечные переменные (каждая из которых содержит координаты x и y). Давайте назовем их FirstPoint и SecondPoint.
При mousedown сохраните текущую позицию мыши в FirstPoint и SecondPoint. Пока мышь не работает, всякий раз, когда она движется, обновляйте SecondPoint с новой позицией мыши.
Затем в каждом кадре, если мышь нажата, нарисуйте прямоугольник на основе двух углов, FirstPoint и SecondPoint. Вам понадобится немного математики, чтобы определить, являются ли они верхним левым / нижним правым или верхним правым / нижним левым, и какой именно, но затем вы просто рисуете прямоугольник между ними или два треугольника. Вам, конечно, придется переключиться в орфографический (2D) режим перед рисованием.
Я не уверен насчет ответа открутки, я даже не знаю, как выполнить операцию XOR, и она кажется чрезмерно сложной, если только вы не хотите, чтобы прямоугольник был отрицательным по отношению к фону (что и является операцией XOR сделал бы, я верю). Кроме того, если вы перерисовываете сцену в каждом кадре, нет причин делать глупые XOR взад и вперед, чтобы стереть предыдущий прямоугольник; это уже было бы переписано рисованием нового кадра.
Я бы лично предпочел нарисовать прямоугольник со сплошным контуром и полупрозрачной заливкой; для этого установите для текущего цвета значение альфа, равное, возможно, 128 (или 0,5f), и нарисуйте прямоугольник между двумя точками, а затем измените режим рисования многоугольника на линию, установите цвет сплошным и нарисуйте еще один прямоугольник.
Наконец, я уверен, что вы захотите отреагировать на резинку; когда мышь отпущена, делайте все, что вам нужно, на основе переменных FirstPoint и SecondPoint. Кроме того, ваш код рисования должен рисовать прямоугольник только когда мышь нажата, поэтому он перестанет рисоваться.