我在一年前写了一段代码,用C#+ OpenTK渲染可编辑的2D Shapes
。每个shape
都有自己的顶点,编辑Shape
会直接更改顶点值。
我在display_callback_func中有一个CollectVertices()
,它迭代所有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
中的值(尽管仍然会对顶点数据进行缩放,因为它在逻辑上应该如此)。
对上述代码段进行微小更改,包含转换矩阵的方法是什么?