Подтвердить что ты не робот

В OpenGL ES, как загрузить текстуру с прозрачными пикселями?

А потом правильно отобразится? Примером может быть круглый шар в прямоугольнике, когда он может видеть другую текстуру в фоновом режиме.

edit: В настоящий момент, когда я загружаю текстуру, прозрачные пиксели из исходного изображения отображаются как черные.

4b9b3361

Ответ 1

Для iPhone и N95 это работает:

Если вы загружаете текстуру из необработанных данных, установите внутренний и исходный формат в GL_RGBA.

glTexImage2D(GL_TEXTURE_2D, 0, 
    GL_RGBA,
    textureWidth,
    textureHeight, 
    0, 
    GL_RGBA,
    GL_UNSIGNED_BYTE,
    pointerToPixels);

И при рендеринге включите альфа-смесь:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);

Ответ 2

Ответ, предоставленный @Virne, верен, и я смог использовать его для устройств Android с небольшими изменениями. Объект myImage, который я использовал, является стандартным .png-изображением с прозрачностью.

Я создал текстуру, используя это:

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0);

И (например, Virne), я включил альфа-смесь при рендеринге:

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_BLEND);