Вершинный массив 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 вместо этого (хотя масштабирование по-прежнему будет выполняться для данных вершин, как и должно быть логически).

Каков аккуратный способ с минимальными изменениями в приведенном выше фрагменте включить матрицу преобразования?

0 ответов

Другие вопросы по тегам