2013-01-07 14 views
5

मैं इस सी ++ प्रोग्राम को बना रहा हूं जिसमें बटन, बटन कंटेनर, चैट बॉक्स आदि हैं, और मैं इसे बनावट के चारों ओर लपेटना चाहता हूं।एक बीएमपी छवि प्रारूप संभाल पारदर्शिता

मैं अपने सभी आयतों के लिए एक चिकना किनारा उत्पन्न करना चाहता हूं, और मैं वर्टेक्स प्लॉटिंग विधि को इसके लिए काम नहीं करना चाहता, क्योंकि यह अधिक CPU उपयोग का उपभोग करता है और यह बहुत अच्छा नहीं लगता है, और मैं नहीं करता 'टी पता है कि यह बनावट निर्देशांक के साथ काम कर सकते हैं (यानी glTexCoord (यू, वी) glVertex2f (एक्स, वाई) w के साथ/ग केवल 4 होना चाहिए, क्योंकि यह एक ट्रैक्टर है)

मैं लोड करने के लिए उपयोग करें का उपयोग कर बनावट एसडीएल_एलओडीबीएमपी() डब्ल्यू/सी .bmp का केवल एक प्रारूप लोड कर सकता है। (मुझे यकीन नहीं है क्योंकि यह केवल लोडबैम्प कहता है)।

तो मेरी प्रश्न हैं:

* कर सकते हैं एक .bmp प्रारूप संभाल पारदर्शिता? यदि हां, तो यह कैसे करें?

* क्या आप मुझे कुछ कोड नमूने या किसी अन्य प्रारूपों कि छवि पारदर्शिता संभाल कर सकते हैं .gif प्रारूप की छवि को लोड करने SOIL का उपयोग कर दिखा सकते हैं?

* क्या एक ट्रैक्टर अपनी अनियमित/बहुभुज आकार को हेक्सागोन या स्टार की पृष्ठभूमि के बिना संभाल सकता है?

अतिरिक्त प्रश्न

* कैसे एक आदिम पाठ बॉक्स कि ग के माध्यम से ++ ओपन renders तो मैं क्लिपबोर्ड में वहाँ ग्रंथों कॉपी कर सकते हैं आयात करने के लिए? मेरे कार्यक्रम में चैट सत्र के लिए।


मैं अपने खुद के पुस्तकालय है कि पाठ का उपयोग कर GL_POINTS खींचता है और जब विंडो का आकार बदलने क्योंकि अंक फैल बाहर थे अच्छा नहीं लग रहा है बना दिया। < स्ट्रिंग> को शामिल करने से बचने के लिए पाठ के लिए यह कॉन्स्ट char * लेता है> क्योंकि मैं चाहता हूं कि मेरा प्रोग्राम सी ++ के मूल कार्यों पर निर्भर न हो।

तो बेहतर समाधान बिटमैप्स का उपयोग करके इसे आकर्षित करना है।

कुछ छवियों का उपयोग करके इसे आकर्षित करने का सुझाव देते हैं इसलिए मुझे वास्तव में पारदर्शिता की आवश्यकता है क्योंकि मैं इसे केवल क्वाड का उपयोग करके आकर्षित करना चाहता हूं।

उत्तर

0

यह उत्तर केवल तभी पता चलता है कि कोई बीएमपी फ़ाइल पारदर्शिता को संभाल सकता है, और एसओआईएल का उपयोग करके पीएनजी फ़ाइल कैसे लोड कर सकता है, और मुझे लगता है कि अगर आप अनुमान से आगे देखते हैं तो यह आपको दिखाता है कि एक gif फ़ाइल को कैसे लोड किया जाए। this wikipedia article के अनुसार, बीएमपी एक फ़ाइल प्रकार है जो alpha channel के माध्यम से पारदर्शिता का समर्थन करता है। लेकिन this एसओ लेख के अनुसार यह नहीं है। अपने अनुभव में मुझे बीएमपी पारदर्शिता कार्य करने का कोई तरीका नहीं मिला है। तो सैद्धांतिक रूप से 32 बिट बीएमपी फाइल पारदर्शिता का समर्थन करने के लिए माना जाता है, लेकिन मुझे शक है। SOIL website से, (शायद मैं मेरे शब्दों खा जाएगा?)

ठीक है, इस कोड को एक PNG फ़ाइल जो संभालती पारदर्शिता लोड करने के लिए कैसे बताता है: एक 24 बिट के साथ

/* load an image file directly as a new OpenGL texture */ 
GLuint tex_2d = SOIL_load_OGL_texture 
(
     "img.png" 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | 
     SOIL_FLAG_COMPRESS_TO_DXT 
); 
+0

मैं एक ट्यूटोरियल साइट [यहां] (http पाया है:

आप मैं इसे सफलतापूर्वक उपयोग कर रहा हूँ चूने परियोजना में, यहाँ एक कार्यान्वयन Haxe में लिखा है http://en.wikipedia.org/wiki/BMP_file_format

में अधिक पढ़ सकते हैं // www.softcity.com/article/creative/how-to-create-with-photoshop-a-bmp-file-with-transparency/zMTOwEzN) जो फ़ोटोशॉप का उपयोग करके एक बीएमपी छवि पर अल्फा चैनल जोड़ने का तरीका दिखाता है। मेरे बीएमपीएस 24 बीपीपी में थे इसलिए इसमें कोई अल्फा चैनल नहीं है। मैं इसे अभी तक 32bpp में बदलने की कोशिश नहीं करता हूं। इसके अलावा मुझे पता चला है कि मेरे mipmap फ़ंक्शन में आरजीबी + ए डब्ल्यू/सी के पैरामीटर अल्फा (आरजीबीए) नहीं हैं, इसलिए मेरे पास अभी भी कई विकल्प हैं। अपने कोड नमूने में, मैं छवियों के आयाम (डब्ल्यू, एच) कैसे निर्धारित कर सकता हूं? क्या एसओआईएल के पास उस कार्य को स्वचालित रूप से गणना करने के लिए किया गया है? – mr5

+0

gluBuild2DMIPMaps के अंतिम पैरामीटर को पास करने के लिए बफर के आकार को कैसे निर्धारित किया जाए? मैंने उनमें से कुछ को देखा है लेकिन मुझे विचार नहीं मिला है बिना हस्ताक्षर किए गए char * data = (unsigned char *) malloc (w * l * 4); और वह डेटा शून्य * (?) के प्रकार पर रखा जाना है, मैं उलझन में हूं। मुझे छवि लोड करने के लिए सभी आवश्यकताओं को भी जानने की आवश्यकता है। thnx – mr5

-1

बीएमपी पारदर्शिता में फ़ोटोशॉप संभव है, गहराई, कम से कम। यह Matlab में "imwrite" के विकल्प के रूप में प्रकट नहीं होता है।

4

हां, बिटमैप प्रारूप समर्थन पारदर्शिता करता है।

यह संपीड़न विधि पर निर्भर करता है, डिफ़ॉल्ट RGB विधि 24-बिट रंग का समर्थन करता है, लेकिन BITFIELDS संपीड़न 32-बिट रंग का समर्थन करता है। https://github.com/openfl/lime/blob/master/lime/graphics/format/BMP.hx

संबंधित मुद्दे