मैं एक ओपनजीएल बनावट में बिटमैप लोड करने की कोशिश कर रहा हूं और इसे स्क्रीन पर प्रदर्शित करता हूं, लेकिन जब मैं ऐसा करता हूं, लाल और नीले मान स्विच करने लगते हैं (उदाहरण: नीली छवि नारंगी, हरा दिखाई देती है छवियां अपरिवर्तित बनी हुई हैं, आदि ..)। बिटमैप्स लोड करते समय यह समस्या केवल तभी मौजूद होती है, मैं अपेक्षाकृत त्रुटि मुक्त .pngs लोड कर सकता हूं।ओपनजीएल बनावट में बीएमपी लोड करना लाल और नीले रंग के रंगों को स्विच करता है। (सी ++/विंडोज)
यह वह कोड है जिसका उपयोग मैं बिटमैप्स लोड करने और बनावट सेट करने के लिए कर रहा हूं। मैं DevIl का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है कि यह कितना प्रासंगिक है, क्योंकि जब मैं एक अलग सिस्टम का उपयोग करता था तो समस्या मौजूद थी (मुझे याद नहीं है कि यह विंडो एच में एक फंक्शन था, मुझे विश्वास है):
ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
ilEnable(IL_ORIGIN_SET);
ILuint image;
ilGenImages(1, &image);
ilBindImage(image);
ilLoad(IL_BMP, "Data/NeHe.bmp"); // Incidentally, loading a png, although it fixes the problem,
// rotates the image 180 degrees. Not sure if that's important or not,
// But it's why I added the first line of code
glGenTextures(3, &_texture[0]);
glBindTexture(GL_TEXTURE_2D, _texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, 3, ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), \
0, GL_RGB, GL_UNSIGNED_BYTE, ilGetData());
ilInit()
और glEnable(GL_TEXTURE_2D)
दोनों को कम प्रासंगिक कार्यों के बीच प्रोग्राम में पहले कहा जाता है। समस्या (और उम्मीदपूर्वक फिक्सिंग) के कारण को खोजने में कोई भी मदद की सराहना की जाएगी।
धन्यवाद। मैंने GL_BGR की कोशिश की, लेकिन मुझे एक त्रुटि मिली है कि यह अस्तित्व में नहीं है। मैं यह भी नहीं देखता कि बिगमैप को बीजीआर डेटा के साथ पहली जगह क्यों संग्रहीत किया जाएगा, है ना? –
@ केंड 64: बीएमपी फाइलें, या सटीक होने के लिए वास्तव में बीजीआर ऑर्डर में संग्रहीत हैं। असल में आधुनिक प्रणालियों पर भी फ्रैम्फफर बिटप्लेन्स बीजीआर (ए) ऑर्डर में हैं, इसलिए बीजीआर प्रारूप में बनावट की आपूर्ति आमतौर पर आरजीबी प्रारूप से तेज होती है। GL_BGR ओपनजीएल संस्करणों> 1.1 से एक टोकन है, हालांकि विंडोज प्लेटफ़ॉर्म एसडीके केवल ओपनजीएल-1.1 के लिए हेडर के साथ जहाजों के बाहर है - कुछ भी एक्सटेंशन के माध्यम से एक्सेस किया जाना चाहिए। बस GLEW http://glew.sourceforge.net या GLee प्राप्त करें, उन लोगों से हेडर का उपयोग किया जाता है जो इसके साथ किए जाते हैं। – datenwolf
आप "#शामिल करें" को भी आजमा सकते हैं, लेकिन संभवतः मेरे मामले में http://www.opengl.org/registry/api/glext.h – Alink