Вершинный массив OpenGL, матричный указатель?
Год назад я написал кусок кода для визуализации редактируемого 2D Shapes
используя C# + OpenTK. каждый shape
имеет свои вершины и редактирование Shape
напрямую изменяет значения вершин.
у меня есть CollectVertices()
в display_callback_func, который перебирает все Shapes
и объединить информацию о вершинах в больших массивах и нарисовать их сразу, используя фрагмент ниже:
GL.EnableClientState(ArrayCap.VertexArray);
GL.EnableClientState(ArrayCap.ColorArray);
// draw fills (triangles)
GL.ColorPointer<byte>(3, ColorPointerType.UnsignedByte, 0, fillColor);
GL.VertexPointer<double>(2, VertexPointerType.Double, 0, fillArray);
GL.DrawArrays(BeginMode.Triangles, 0, fillArray.Length / 2);
// draw lines
GL.ColorPointer<byte>(3, ColorPointerType.UnsignedByte, 0, lineColor);
GL.VertexPointer<double>(2, VertexPointerType.Double, 0, lineArray);
GL.DrawArrays(BeginMode.Lines, 0, lineArray.Length / 2);
GL.DisableClientState(ArrayCap.ColorArray);
GL.DisableClientState(ArrayCap.VertexArray);
Год спустя сегодня я хочу представить новый struct Transform
к Shape
объект. Он будет содержать Vector2 Center
а также Matrix Orientation
, Редактирование Shape
Теперь изменит значения в Transform
вместо этого (хотя масштабирование по-прежнему будет выполняться для данных вершин, как и должно быть логически).
Каков аккуратный способ с минимальными изменениями в приведенном выше фрагменте включить матрицу преобразования?