Tại sao kết cấu PNG của tôi không xuất hiện với độ trong suốt?
Hình ảnh dưới cùng bên phải phải có nền trong suốt.
tôi tải PNG Notch của tôi qua các chức năng:
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);
}
Và shader mảnh của tôi trông như thế này:
#version 330
in vec2 TexCoord0;
uniform sampler2D TexSampler;
void main()
{
gl_FragColor = texture2D(TexSampler, TexCoord0.xy);
}
Tôi đã kiểm tra các bmp
với trình gỡ lỗi, và sử dụng bmp.GetPixel(255,0)
(ngay phía trên cây non đó, trong khu vực màu đen) và nó trở lại (0,0,0,0)
. The docs say 0 là hoàn toàn minh bạch, vì vậy ... Tôi phải làm điều gì đó sai trái về phía OpenGL của sự vật. Nhưng cái gì?
Render chức năng
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();
}
Ahhh Minecraft, tôi không thể thoát khỏi bạn! – Zenexer
Điều này trông giống như một trò chơi tôi đã thấy một nơi nào đó. – Ryan
Vâng, tôi nghĩ bạn chắc chắn tải nó đúng cách. Đó không phải là vấn đề. – Zenexer