2012-06-13 12 views
5

इसलिए मैंने इस कार्यक्रम को एक गेम के लिए बनाया है और इसे थोड़ा और स्वचालित बनाने में मदद की ज़रूरत है।सी ++ छवि मैनिपुलेशन

प्रोग्राम एक छवि में लेता है और फिर इसे प्रदर्शित करता है। मैं ओपनजीएल में बनावट पर कर रहा हूं। जब मैं गेम का स्क्रीनशॉट लेता हूं तो यह आमतौर पर 700x400 के बारे में कुछ होता है। मैं अपने प्रोग्राम में ऊंचाई और चौड़ाई इनपुट करता हूं, रिक्त स्थान जोड़कर छवि को 1024x1024 (इसे बेहतर संगतता के लिए एक पीओटी बनावट बनाकर) का आकार बदलता हूं (मूल छवि शीर्ष बाएं कोने पर रहता है और (700,400) तक जाता है और बाकी बस खाली है; क्या किसी को इसके लिए शब्द पता है?) और फिर इसे मेरे प्रोग्राम में लोड करें और कोनों को समायोजित करें ताकि केवल (0,0) से (700,400) का हिस्सा दिखाया जा सके।

इस तरह मैं छवि के प्रदर्शन को संभालता हूं। अब, मैं इसे स्वचालित बनाना चाहता हूं। इसलिए मैं 700x400 तस्वीर लेता हूं, इसे प्रोग्राम में पास करता हूं जो छवि की चौड़ाई और ऊंचाई (700x400) प्राप्त करेगा, इसे रिक्त स्थान जोड़कर 1024x1024 पर आकार बदलें और फिर इसे लोड करें।

तो क्या कोई ऐसा करने में सक्षम सी ++ लाइब्रेरी को जानता है? हालांकि मैं अभी भी स्क्रीनशॉट मैन्युअल रूप से ले जा रहा हूं।

मैं तस्वीर (.bmp) लोड करने और इसे बनावट में परिवर्तित करने के लिए सरल ओपनजीएल छवि लाइब्रेरी (एसओआईएल) का उपयोग कर रहा हूं।

धन्यवाद!

उत्तर

1

आपको छवि को सही तरीके से प्रदर्शित करने के लिए खाली स्थान जोड़कर वास्तव में आकार बदलना नहीं है। वास्तव में, यह करने के लिए वास्तव में अक्षम तरीका है, खासकर क्योंकि आप .bmp प्रारूप में छवियों को संग्रहीत करते हैं।

एसओआईएल बनावट लोड करते समय स्वचालित रूप से रिक्त स्थान जोड़ सकता है - शायद किसी भी ऑपरेशन किए बिना फ़ाइल को लोड करने का प्रयास करें।

मिट्टी प्रलेखन से:

स्वचालित रूप से (अगला सबसे बड़ा बिजली के- दो आकार

जीयूआई तत्वों या छप स्क्रीन के लिए rectangluar बनावट लोड कर सकते हैं करने के लिए छवि rescale कर सकते हैं GL_ARB की आवश्यकता है/EXT/NV_texture_rectangle)

वैसे भी, आपको पिक्सल को प्रदर्शित करने के लिए बनावट का उपयोग करने की आवश्यकता नहीं है creen। मुझे लगता है कि आप प्रतिपादन के लिए शेडर्स का उपयोग नहीं कर रहे हैं - यदि यह सब निश्चित पाइपलाइन के माध्यम से जाता है, तो glDrawPixels फ़ंक्शन है, जो बहुत आसान होगा। बस अपने एसओआईएल कॉल को SOIL_load_image में बदलना याद रखें।

+0

"छवि को स्वचालित रूप से अगली सबसे बड़ी शक्ति-दो आकार में पुन: सहेज सकता है" - मैंने वास्तव में "स्वचालित रूप से" शब्द को याद किया। : डी मैं कोशिश करता हूँ कि आपने क्या कहा। धन्यवाद! – Tuntuni

+0

मैंने आकार बदलने के बिना इसे लोड करने का प्रयास किया है, लेकिन यह अजीब हो गया है। मुझे यकीन है कि मेरे कोनों को उनके स्थान पर हैं। छवि ग्रेस्केल भी बदलती है और जैसे ही मैं इसे स्केल करता हूं, यह कुछ रंग वापस प्राप्त करता है। क्या आप मुझे SOIL_load_image और glDrawPixels, या एक लिंक पर कोई एक्समैपल्स दे सकते हैं? धन्यवाद। – Tuntuni

+0

शायद 'SOIL_FLAG_POWER_OF_TWO' या 'SOIL_FLAG_TEXTURE_RECTANGLE' आज़माएं। –

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