Это событие при нажатии кнопки мыши:
Код: Выделить всё
private void glControlLayout_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
IsDragging = true;
LastMousePosition = new D.Vector2(MousePosition.X, MousePosition.Y);
}
}
Код: Выделить всё
private void glControlLayout_MouseMove(object sender, MouseEventArgs e)
{
Point screenMouseCoordinates = new Point(MousePosition.X, MousePosition.Y);
PointF formMouseCoordinates = this.PointToClient(screenMouseCoordinates);
int index;
if(IsDragging != true)
{
if (RectangleList.Count > 0)
{
for (index = 0; index < RectangleList.Count; index++)
{
if (RectangleList[index].RectangleHitBox.Contains(formMouseCoordinates))
{
DraggedRectangle = index;
break;
}
}
}
}
if (IsDragging)
{
if (DraggedRectangle > -1)
{
MoveObject(DraggedRectangle);
}
}
}
Код: Выделить всё
D.Vector2 newMousePosition = new D.Vector2(MousePosition.X, MousePosition.Y);
D.Vector2 delta = newMousePosition - LastMousePosition;
TransformVertices(delta, index);
LastMousePosition = newMousePosition;
glControlLayout.Refresh();
Это мой код VertexShader:
Код: Выделить всё
#version 330 core
uniform mat4 Transformation;
layout (location = 0) in vec2 aPosition;
layout (location = 1) in vec4 aColor;
out vec4 vColor;
void main()
{
gl_Position = vec4(aPosition, 0f, 1f) * Transformation;
vColor = aColor;
}
Код: Выделить всё
ProjectionMatrix =
Matrix4.CreateOrthographicOffCenter(
0f,
glControl.Width,
0f,
glControl.Height,
-1f,
1f
);
ViewMatrix = Matrix4.Identity;
Подробнее здесь: https://stackoverflow.com/questions/786 ... k-winforms