SharpGL में सरल पारदर्शी sprites प्रस्तुत नहीं कर सकते - सी #, opengl, sprite, texture2d, sharpgl

मुझे पता है कि विमान कैसे उत्पन्न करें और बनावट को मानचित्र बनाएं। अब, मैं अपने फॉर्म पर अल्फा-मिश्रित पीएनजी प्रदर्शित करने की कोशिश कर रहा हूं, जैसे कि यह एक स्प्राइट था।

मैं गूगलिंग और अनुमान लगाने से निम्नलिखित कोड के साथ आया हूं:

//  Get the OpenGL object.
var gl = openGLControl.OpenGL;

//  We need to load the texture from file.
var textureImage = Resources.Resource1.bg;

//  A bit of extra initialisation here, we have to enable textures.
gl.Enable(OpenGL.GL_TEXTURE_2D);

//  Get one texture id, and stick it into the textures array.
gl.GenTextures(1, textures);

//  Bind the texture.
gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[0]);

gl.Enable(OpenGL.GL_BLEND);
gl.BlendFunc(OpenGL.GL_SRC_ALPHA, OpenGL.GL_DST_ALPHA);

var locked = textureImage.LockBits(
new Rectangle(0, 0, textureImage.Width, textureImage.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly,
System.Drawing.Imaging.PixelFormat.Format32bppArgb
);

gl.TexImage2D(
OpenGL.GL_TEXTURE_2D,
0,
4,
textureImage.Width,
textureImage.Height,
0,
OpenGL.GL_RGBA,
OpenGL.GL_UNSIGNED_BYTE,
locked.Scan0
);
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_S,     OpenGL.GL_CLAMP);
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_T,     OpenGL.GL_CLAMP);
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_LINEAR);
gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR);

यहां मूल स्रोत छवि है जिसका मैं उपयोग कर रहा हूं:

यहां आउटपुट है जब मैं अपने फॉर्म पर इस स्प्राइट 10 × 10 (100) बार प्रस्तुत करता हूं:

आउटपुट सब गड़बड़ है, और यह छवि के अल्फा चैनल का सम्मान नहीं कर रहा है। यह सुनिश्चित करने के लिए कि यह सही ढंग से प्रस्तुत करता है, मेरे कोड में क्या परिवर्तन किए जाने की आवश्यकता है?

उत्तर:

उत्तर № 1 के लिए 1

आपका सवाल बहुत अस्पष्ट है। मुझे लगता है कि आप जो खोज रहे हैं वह मिश्रण समारोह को बदल रहा है glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

यह अर्द्ध और पूरी तरह से पारदर्शी बनावट प्रतिपादन दोनों सक्षम करेगा।

कृपया ध्यान दें कि यह गहराई से बफरिंग के साथ मिलकर काम नहीं करेगा।


संबंधित सवाल
सबसे लोकप्रिय