我從呈現然而,當在800x600 png格式顯示位圖
: 爲什麼三角形在圖像上渲染背景顏色?
我有一個繼承GameWindow一個窗口類,這裏是重寫的方法是(我認爲)是相關的:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
GrafxUtils.InitTexturing();
textureId = GrafxUtils.CreateTextureFromBitmap((Bitmap)currentImage);
OnResize(null);
GL.ClearColor(Color.Gray);
}
protected override void OnRenderFrame(FrameEventArgs e) {
base.OnRenderFrame(e);
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.MatrixMode(MatrixMode.Texture);
GL.LoadIdentity();
GL.BindTexture(TextureTarget.Texture2D, textureId);
GL.Begin(PrimitiveType.Quads);
// top-left
GL.TexCoord2(0, 0);
GL.Vertex2(0, 0);
// top-right
GL.TexCoord2(1, 0);
GL.Vertex2(currentImage.Width, 0);
// bottom-left
GL.TexCoord2(0, 1);
GL.Vertex2(0, currentImage.Height);
// bottom-right
GL.TexCoord2(1, 1);
GL.Vertex2(currentImage.Width, currentImage.Height);
GL.End();
SwapBuffers();
}
...和CreateTextureFromBitmap方法:
// utility method from GrafxUtils
public static int CreateTextureFromBitmap(Bitmap bitmap) {
BitmapData data = bitmap.LockBits(
new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.ReadOnly,
System.Drawing.Imaging.PixelFormat.Format32bppArgb);
var tex = GetBoundTexture();
GL.BindTexture(TextureTarget.Texture2D, tex);
GL.TexImage2D(
TextureTarget.Texture2D,
0,
PixelInternalFormat.Rgba,
data.Width, data.Height,
0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra,
PixelType.UnsignedByte,
data.Scan0);
bitmap.UnlockBits(data);
SetParameters();
return tex;
}
會導致三角形出現什麼?
我不是故意繪製任何三角形。 :) ...什麼是纏繞順序? – IAbstract
我看了XNA的鏈接...什麼是相關性?有一個命令,我應該設置TexCoord2和Vertex2?這就是我所要做的。 :) – IAbstract
好的...你幫我找到了我需要的方向。雖然不是一個完整的答案,我給+1。 :)我完成一個縮放功能後,很可能會發佈一個答案。 – IAbstract