Как установить прозрачность изображения с помощью OpenGL ES 2.0 и GLKit?

Я новичок в программировании для iOS и OpenGL, и в настоящее время я пишу простую программу, используя OpenGL ES 2.0 и GLKit для практики. Прямо сейчас я могу успешно загрузить файл PNG и отобразить его на экране.

Я использовал GLKViewController в своей программе и сделал некоторую инициализацию в viewDidLoad. Вот код в моем методе glkView:drawInRect:

glClearColor(115.0/255.0, 171.0/255.0, 245.0/255.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

self.effect.texture2d0.name = self.textureInfo.name;
self.effect.texture2d0.enabled = YES;

[self.effect prepareToDraw];

glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);

long offset = (long)&_quad;
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, geometryVertex)));
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, textureVertex)));

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

Приведенный выше код работает довольно хорошо. Теперь я хочу установить непрозрачность изображения PNG. Это может показаться простым, но я понятия не имею, как я могу изменить непрозрачность...


person Blade Runner    schedule 01.06.2013    source источник


Ответы (1)


Я подозреваю, что ваш фрагментный шейдер дает постоянное значение 1.0 для альфа-канала в gl_FragColor. Это значение должно варьироваться, чтобы произвести смешивание. Посмотрите, пожалуйста, ответы на этот вопрос:

Как можно Я получаю прозрачность альфа-смешивания, работающую в OpenGL ES 2.0?

person ClayMontgomery    schedule 13.06.2013