2013-11-21 5 views
0

Есть ли в любом случае, я могу повернуть изображение 2D-текстуры, вращающееся до точки? Я пробовал функцию glRotate, она вращает и перемещает объект. Я ищу функцию/способ для поворота моих текстур в точку, не перемещая их.Текстура 2D Вращение до точки

Вот мой Жеребьевка код:

static void Draw2DTexture(int textureid, float x1, float y1, float width, float height, Color color) 
{ 
    float x2 = x1 + width; 
    float y2 = y1 + height; 
    RectangleF rect; 
    rect = new RectangleF(0, 0, 1, 1); 
    GL.PushAttrib(AttribMask.ColorBufferBit); 
    GL.Color3(color); 
    GL.BindTexture(TextureTarget.Texture2D, textureid); 
    GL.Enable(EnableCap.Texture2D); 
    GL.Disable(EnableCap.DepthTest); 
    GL.Rotate(35, 0f, 0f, 1f); 
    GL.Begin(BeginMode.Quads); 
    GL.TexCoord2(rect.Right, rect.Bottom); GL.Vertex2(x2, y2); 
    GL.TexCoord2(rect.Right, rect.Top); GL.Vertex2(x2, y1); 
    GL.TexCoord2(rect.Left, rect.Top); GL.Vertex2(x1, y1); 
    GL.TexCoord2(rect.Left, rect.Bottom); GL.Vertex2(x1, y2); 
    GL.End(); 
    GL.Enable(EnableCap.DepthTest); 
    GL.PopAttrib(); 
} 

Draw2DTexture(5, 300f, 300f, 256f, 512f, Color.White); 
+1

Повернуть в точку? Вы знаете, что конвейер с фиксированной функцией имеет матрицу для каждой единицы текстуры? Обычно это единичная матрица, поэтому при выборке координат текстуры они вообще не преобразуются, но если вы установите матричный режим на «GL_TEXTURE» и выполните вращение, вы можете применить поворот только к координатам текстуры. –

ответ

1

«Она вращается и перемещает объект»

я не уверен, что вращающаяся к точка есть, но проблема вы говорите здесь о имеющий соответствующий центр вращения.

Всякий раз, когда вы применяете поворот к объекту, он вращает его о происхождении. Это здорово, но что происходит, когда ваш объект не сосредоточен относительно происхождения? Вам нужно перевести свой объект на начало координат, повернуть его и перевести обратно в исходное положение.

  1. объекта в данный момент с центром в точке (х, у)
  2. Перевести объект, (-x, -y)
  3. Объект теперь с центром в точке (0,0)
  4. Выполнение вращения
  5. Перевести объект, (х, у)
  6. объекта в центре снова в точке (х, у)

Это будет вращаться на месте.

Что относительно вращения вокруг точки? Вместо того, чтобы переводить в начало координат через положение вращающегося объекта, перевести в точку, вокруг которой вы хотите повернуть

  1. объекта в настоящее время с центром в точке (х, у)
  2. центр объекта, о котором для вращения находится в точке (а, б)
  3. Перевести объект, (-a, -b)
  4. Выполнение вращения
  5. Перевести объект с помощью (а, б)
  6. объект теперь вращается вокруг (а, б)
Смежные вопросы