无论如何我可以将我的2D纹理图像旋转到一个点吗?我尝试过glRotate函数,它旋转并移动对象。我正在寻找一种函数/方法,通过不移动纹理将纹理旋转到一个点。
这是我的抽奖代码:
static void Draw2DTexture(int textureid, float x1, float y1, float width, float height, Color color)
{
float x2 = x1 + width;
float y2 = y1 + height;
RectangleF rect;
rect = new RectangleF(0, 0, 1, 1);
GL.PushAttrib(AttribMask.ColorBufferBit);
GL.Color3(color);
GL.BindTexture(TextureTarget.Texture2D, textureid);
GL.Enable(EnableCap.Texture2D);
GL.Disable(EnableCap.DepthTest);
GL.Rotate(35, 0f, 0f, 1f);
GL.Begin(BeginMode.Quads);
GL.TexCoord2(rect.Right, rect.Bottom); GL.Vertex2(x2, y2);
GL.TexCoord2(rect.Right, rect.Top); GL.Vertex2(x2, y1);
GL.TexCoord2(rect.Left, rect.Top); GL.Vertex2(x1, y1);
GL.TexCoord2(rect.Left, rect.Bottom); GL.Vertex2(x1, y2);
GL.End();
GL.Enable(EnableCap.DepthTest);
GL.PopAttrib();
}
Draw2DTexture(5, 300f, 300f, 256f, 512f, Color.White);
答案 0 :(得分:1)
“它旋转并移动对象”
我不确定将旋转到点是什么,但你在这里提到的问题是关于拥有正确的旋转中心。
无论何时向对象应用旋转,都会围绕原点旋转。这很好,但是当你的物体不是以原点为中心时会发生什么?您需要将对象转换为原点,旋转它并将其转换回原始位置。
这将在适当的位置旋转。
围绕某个点旋转 怎么样?不是通过旋转物体的位置平移到原点,而是通过您想要旋转的点进行平移