У меня загружена текстура в память формата RGBA с различными значениями альфа.
Изображение загружается так:
GLuint texture = 0;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
self.texNum = texture;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, self.imageWidth, self.imageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, [self.imageData bytes]);
Я хочу знать, как можно нарисовать эту текстуру, чтобы альфа-канал на изображении обрабатывался как все 1, а текстура рисовалась как изображение RGB.
Рассмотрим базовое изображение:
![http://www.ldeo.columbia.edu/~jcoplan/alpha/base.png](https://i.stack.imgur.com/XIGGw.png)
Это изображение представляет собой последовательность от 0 до 255 альфа и имеет значение RGB 255,0,0 на всем протяжении
Однако, если я нарисую его с отключенным смешиванием, я получу изображение, которое выглядит следующим образом:
www.ldeo.columbia.edu/~jcoplan/alpha/no_alpha.png
Когда то, что я действительно хочу, это изображение, которое выглядит так:
www.ldeo.columbia.edu/~jcoplan/alpha/correct.png
Мне бы очень хотелось, чтобы некоторые указатели полностью игнорировали альфа-канал. Обратите внимание, что я не могу просто загрузить изображение как RGB, потому что мне нужен альфа-канал в других точках.
Редактировать: я пытался использовать GL_COMBINE, чтобы решить мою проблему следующим образом:
glColorf(1,1,1,1);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PRIMARY_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
[self drawTexture];
Но все-таки не повезло, оно все еще тянет от черного к красному.