一年前我写了一段代码,用于Shapes
使用 C# + OpenTK 渲染可编辑的 2D。每个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
(尽管缩放仍将在顶点数据上完成,因为它在逻辑上应该如此)。
什么是包含转换矩阵的简洁方法,只需对上述代码片段进行最小的更改?