OpenGL ES черный как альфа (прозрачность) - PullRequest
0 голосов
/ 26 февраля 2012

Я решил переместить свой проект Android на C ++, и у меня возникла проблема. В коде Java я загружал свою текстуру без альфа-значения, и черный цвет был фактически моим прозрачным цветом, но теперь я не могу этого сделать. Черный цвет просто черный, не прозрачный.

Я загружаю текстуру так:

GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*) image_data);

1 Ответ

2 голосов
/ 26 февраля 2012

Внутренний формат GL_RGB состоит только из трех компонентов.У него нет альфы.Поэтому, если вы попытаетесь получить доступ к альфе и сделать что-то с несуществующей альфой, OpenGL заменит ее для вас.С 1.0 , что, вероятно, не то, что вы хотели.

Если вы хотите альфа, вам нужно предоставить альфа.OpenGL не создаст для вас магию и не примет, что черный означает «прозрачный».

В качестве альтернативы, вы не включили смешивание или альфа-тестирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...