Я создаю полигон, заполненный текстурой, используя opengl в фреймворке cocos2d.Я использовал PRKit ( link ) и изменил метод рисования с помощью кода, показанного ниже.
glBlendFunc(GL_ONE, GL_ZERO);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glBindTexture(GL_TEXTURE_2D, self.texture.name);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glVertexPointer(2, GL_FLOAT, 0, polyTriangulatedPoints);
glTexCoordPointer(2, GL_FLOAT, 0, textureCoordinates);
glDrawArrays(GL_TRIANGLES, 0, trianglePointCount);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Когда я использую прозрачную PNG в качестве текстуры, я получаю немного странный результат.Прозрачная область не черная, а случайные цвета с черным.Вот вывод, который я получаю с помощью приведенного выше кода.

Мне пришлось сохранить glBlendFunc (GL_ONE, GL_ZERO), что аналогично отключению смешивания.Если я этого не сделаю, мой фоновый слой в cocos2d будет добавлен с моим изображением текстуры, что приведет к очень яркой текстуре.Чтобы добавить больше информации, я установил режим текстуры, чтобы все изображения загружались со следующим.
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, ширина, высота, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
Мой вопрос заключается в том, почему я вижу подобные виды случайных цветов в прозрачной области иКакие способы решить эту проблему?У меня такое чувство, что я, должно быть, делаю что-то не так, поскольку я новичок в opengl.