मैं क्यूब मैप के साथ स्काई बॉक्स बना रहा हूं इसलिए मैंने इस साइट का उपयोग क्यूब मैप के किनारों को जेनरेट करने के लिए किया Sky बॉक्स जनरेटर, अब मेरे पास ६ ५१२ पीएनजी फाइलें हैं, मैंने इसे प्रस्तुत करने के लिए निम्नलिखित कोड का उपयोग किया है:

glGenTextures(1, &cubemapTexture);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_CUBE_MAP, cubemapTexture);
for (GLuint i = 0; i < images.size(); i++) {
    glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, images[i].width, images[i].height, 0, GL_RGB, GL_UNSIGNED_BYTE, images[i].data);
}
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_CUBE_MAP, 0);

कोड विभिन्न छवियों के साथ ठीक काम कर रहा था, लेकिन इस साइट से डाउनलोड की गई छवियां मुझे निम्नलिखित परिणाम देती हैं:

enter image description here

यह काम नहीं कर रही छवि का एक नमूना है:

Sample tha is not working

यह काम की गई छवियों का एक नमूना है:

enter image description here

0
Mohamed Moussa 14 नवम्बर 2018, 17:29

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि पीएनजी फाइलों में अल्फा चैनल होता है, इसलिए आपको अपने glTexImage2D कॉल में GL_RGBA का उपयोग इस तरह करना चाहिए:

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA, images[i].width, images[i].height, 0, GL_RGBA , GL_UNSIGNED_BYTE, images[i].data);
1
VuVirt 14 नवम्बर 2018, 16:04