2011-01-22 13 views
7

में काली रंग है Iphone गेम विकसित कर रहा हूं। मेरे पास पृष्ठभूमि में इसे आकर्षित करने के लिए नीचे स्रोत छवि है। स्रोत छवि में अल्फा 0x00 और किनारे के चारों ओर क्रमिकता है और पृष्ठभूमि का अल्फा 0xff है। जब मैं पृष्ठभूमि छवि को पृष्ठभूमि में खींचता हूं, तो मेरे पास काला रंग होता है जैसे आप परिणाम छवि देख सकते हैं। मैं OpenGL ES glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) विधि का उपयोग कर रहा हूं। मैंने हर संभव तर्क बदल दिया है, लेकिन हर बार जब यह स्थानांतरित नहीं होता है।आईफोन ओपनएल ए अल्फा-ब्लेंडिंग। मेरे पास

मेरे पास स्रोत छवि के किनारे का काला रंग क्यों है? समस्या क्या है? आईफोन में हर खेल ग्रेडेशन का उपयोग नहीं करता है?

क्या मुझे स्रोत छवि को आउट ग्रेडेशन के साथ बनाने की आवश्यकता है?

क्या कोई समाधान ढूंढता है?

स्रोत छवि:

alt text

परिणाम छवि:

alt text

उत्तर

14

अपनी छवि है पूर्व बढ़ी अल्फा? तो फिर तुम का उपयोग करना चाहिए

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

Here कि यह क्या है के कुछ स्पष्टीकरण है।

नोट: कुछ शोध करने के बाद मैंने जवाब दोबारा लिखा। आलेख rotoglup का उल्लेख है कि क्या हो रहा है इस पर कुछ अंतर्दृष्टि है और यह मेरे मूल सूत्र के बारे में अधिक समझ में आता है। मैंने यह भी देखने की कोशिश की कि अन्य लोग अपने कोड में क्या उपयोग कर रहे हैं और ऐसा लगता है कि यह सूत्र सबसे अधिक इस्तेमाल किया जाने वाला है। यह आश्चर्यजनक है कि अल्फा ब्लेंडिंग के रूप में 3 डी ग्राफिक्स में ऐसी मूल बात इतनी विवादास्पद हो सकती है और हर कोई पहिया को फिर से शुरू करने लगता है और अपने स्वयं के समाधान के साथ आता है।

+0

सहमत, यह अल्फा के एक सामान्य डबल गुणा की तरह दिखता है। – v01d

+0

यह एक नहीं होना चाहिए, ONE_MINUS_SRC_ALPHA? – rotoglup

+1

यहां एक लेख है जो स्पष्टीकरण का एक अन्य स्रोत हो सकता है: http://home.comcast.net/~tom_forsyth/blog.wiki.html#%5B%5BPremultiplied%20alpha%5D%5D – rotoglup

0

बस जिस दृश्य को आप चित्रित कर रहे हैं उसे जांचें अपारदर्शी है या नहीं। अपारदर्शी संपत्ति को झूठी

+0

यह ओपनजीएल में है, यूआईकिट नहीं। – v01d

0

एक ऐसा तरीका यह हो सकता है कि यदि आपने अपनी क्लैंप विधि के साथ सही ढंग से लघुकरण और आवर्धन फ़िल्टर के लिए अपनी glTexParameteri सेट नहीं किया है। एडम रेडवुड की टिप्पणी here देखें। नोट दो शक्तियों, बनावट सीमाओं आदि के मुद्दे भी खेल सकते हैं।

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
संबंधित मुद्दे