मेरा पीएनजी बनावट पारदर्शिता के साथ क्यों नहीं आ रहा है?
नीचे दाएं छवि में एक पारदर्शी पृष्ठभूमि होनी चाहिए।
मैं इन कार्यों के माध्यम से मेरी नौच के पीएनजी लोड:
public void Image2D(Bitmap bmp, int mipmapReductionLevel = 0)
{
var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
var data = bmp.LockBits(rect, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
GL.TexImage2D(TextureTarget.Texture2D, mipmapReductionLevel, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
bmp.UnlockBits(data);
}
public void Image2D(string filename, int mipmapReductionLevel = 0)
{
Image2D(new Bitmap(filename), mipmapReductionLevel);
}
और मेरे टुकड़ा शेडर इस तरह दिखता है:
#version 330
in vec2 TexCoord0;
uniform sampler2D TexSampler;
void main()
{
gl_FragColor = texture2D(TexSampler, TexCoord0.xy);
}
मैं डीबगर के साथ bmp
का निरीक्षण किया गया है, और bmp.GetPixel(255,0)
इस्तेमाल किया (काले पेड़ में, उस वृक्ष के ऊपर से ऊपर) और यह (0,0,0,0)
वापस आता है। The docs say 0 पूरी तरह से पारदर्शी है, इसलिए ... मुझे चीजों के ओपनजीएल पक्ष पर कुछ गलत करना होगा। पर क्या?
प्रस्तुत समारोह
protected override void OnRenderFrame(FrameEventArgs e)
{
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
_blockInstanceBuffer.Bind();
_blockIndexBuffer.Bind();
GL.DrawElementsInstancedBaseVertex(BeginMode.TriangleStrip, Data.FaceIndices.Length, DrawElementsType.UnsignedInt, IntPtr.Zero, _blockCount, 0);
SwapBuffers();
}
आह Minecraft, मैं तुम्हें बच नहीं सकते! – Zenexer
यह एक ऐसा गेम जैसा दिखता है जिसे मैंने कभी देखा था। – Ryan
हाँ, मुझे लगता है कि आप निश्चित रूप से इसे ठीक से लोड कर रहे हैं। यह मुद्दा नहीं है। – Zenexer