任何幫助,我用C#OpenGL。我不能使用以外的任何其他庫:OpenGL中的圖像旋轉atan2?
using System;
using OpenGL;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing;
我似乎不能旋轉我的圖像,所以它面臨着它的移動方式。
這就是所謂的在我的世界繪製方法:
foreach (Bug bug in m_Bugs)
{
double radians = Math.Atan2(bug.getPos().X + bug.getVel().X, bug.getPos().Y + bug.getVel().Y);
double angle = radians * (180/Math.PI);
GL.glRotated(angle, 0, 0, 1);
bug.Draw();
}
和我的畫法是所謂的主線程在這裏:
form.RegisterDraw(myWorld.Draw);
我bug.draw工作perefectly它顯示並融合了紋理很好。
我的world.draw方法中的foreach循環中的代碼將velocity(getVel)和position(getPos)作爲2d向量返回。
任何幫助將不勝感激,歡呼聲。
private void Load(uint[] array, int index, string filepath)
{
Bitmap image = new Bitmap(filepath);
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
System.Drawing.Imaging.BitmapData bitmapdata;
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
/* Set the correct ID, then load the texture for that ID * from RAM onto the Graphics card */
GL.glBindTexture(GL.GL_TEXTURE_2D, array[index]);
GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_RGB8, image.Width, image.Height, 0, GL.GL_BGR_EXT, GL.GL_UNSIGNED_byte, bitmapdata.Scan0);
GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, (int)GL.GL_LINEAR);
GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, (int)GL.GL_LINEAR);
/* This code releases the data that we loaded to RAM * but the texture is still on the Graphics Card */
image.UnlockBits(bitmapdata);
image.Dispose();
}
感謝您的詳細回覆,我如何通過座標系和代碼中的速度之間的角度來旋轉錯誤? – rx432