Вы пробовали что-нибудь попроще, как это?
protected override void Draw( GameTime gameTime )
{
graphics.GraphicsDevice.Clear( Color.CornflowerBlue );
base.Draw( gameTime );
MouseState current_mouse = Mouse.GetState();
Vector2 pos = new Vector2(current_mouse.X, current_mouse.Y);
batch.Draw(tex, pos, Color.White);
}
Может быть некоторое время между прорисовкой и обновлением, из-за того, как работает синхронизация в XNA, возможно, это причина воспринимаемого смещения пикселя?
И ... вы уверены, что правильно "настроили" свой спрайт?Координаты относятся к окну игры, поэтому в документации сказано:
Еще одна вещь: почему вы используете статические поля?Мне действительно не нравится этот выбор, анти-шаблон.Используйте поля класса, а не статические поля.
Также ... я думаю, вы рисуете значок мыши, верно?Предположим, что XNA начинает рисовать текстуру из указанной точки. Вы уверены, что текстура имеет правильную форму с левой верхней точкой в качестве конца стрелки мыши?
Я нашел хороший пример, который вам может понравиться: http://azerdark.wordpress.com/2009/07/08/displaying-cursor-xna/
Учтите также, что вы можете включать и отключать обычный курсор мыши в ОС Windows с помощью IsMouseVisible = true;