1

一年前我写了一段代码,用于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 TransformShape对象。它将包含一个Vector2 CenterMatrix Orientation。编辑Shape现在将更改值Transform(尽管缩放仍将在顶点数据上完成,因为它在逻辑上应该如此)。

什么是包含转换矩阵的简洁方法,只需对上述代码片段进行最小的更改?

4

0 回答 0