C#OpenTK-TexturedQuads最近下载了OpenTK。我创建了一个基本的游戏类和四边形。我尝试在我的四边形中渲染纹理,但它不起作用。这是我的代码。这是加载纹理的地方。(纹理类只包含一个ID和一个Bitmap.GetWidth()和GetHeight()只返回Bitmap.Width和Bitmap.Height)。纹理Texture=newTexture();Texture.Bitmap=newBitmap(Path);Texture.ID=GL.GenTexture();GL.BindTexture(TextureTarget.Texture2D,Texture.ID);BitmapDatadata=Texture.Bitmap.LockBits(newRectangle(0,0,Texture.GetWidth(),Texture.GetHeight()),ImageLockMode.ReadOnly,System.Drawing.Imaging.PixelFormat.Format32bppArgb);GL.TexImage2D(TextureTarget.Texture2D,0,PixelInternalFormat.Rgba,Texture.GetWidth(),Texture.GetHeight(),0,OpenTK.Graphics.OpenGL.PixelFormat.Rgba,PixelType.Bitmap,data.Scan0);Texture.Bitmap.UnlockBits(数据);GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureMinFilter,(int)All.Linear);GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureMagFilter,(int)All.Linear);返回纹理;这是冲洗方法。GL.Enable(EnableCap.Texture2D);GL.BindTexture(TextureTarget.Texture2D,ID);GL.Begin(PrimitiveType.Quads);GL.TexCoord2(0,1);GL.Vertex2(0,32);(1,1);GL.Vertex2(32,32);GL.TexCoord2(1,0);GL.Vertex2(32,0);GL.TexCoord2(0,0);;GL.End();GL.Disable(EnableCap.Texture2D);它只渲染四边形,没有别的。有人能帮我吗?尝试替换:GL.TexImage2D(TextureTarget.Texture2D,0,PixelInternalFormat.Rgba,Texture.GetWidth(),Texture.GetHeight(),0,OpenTK.Graphics.OpenGL.PixelFormat.Rgba,PixelType.Bitmap,data.Scan0);有:GL.TexImage2D(TextureTarget.Texture2D,0,PixelInternalFormat.Rgba,Texture.GetWidth(),Texture.GetHeight(),0,OpenTK.Graphics.OpenGL.PixelFormat.Bgra,PixelType.UnsignedByte,data.Scan0);GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureWrapS,TextureWrapMode.ClampToEdge);GL.TexParameter(TextureTarget.Texture2D,TextureParameterName.TextureWrapT,TextureWrapMode.ClampToEdge);这应该解决它。在您的格式化问题中,您使用的东西不能准确地表示System.Drawing.Bitmap表示32bppArgb位图的方式。以上就是C#学习教程:C#OpenTK-贴图四边形分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
