Я использую следующую ссылку для исходного кода для рисования 3D-куба в iOS.GLKit Transparent Texture
http://www.raywenderlich.com/5235/beginning-opengl-es-2-0-with-glkit-part-2
Вот фрагмент кода моей рутины обновления:
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
glClearColor(30/255.0, 30/255.0, 30/255.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
// Enable transparency
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
[[self effect] prepareToDraw];
glBindVertexArrayOES(_vertexArray);
glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);
// Cleanup: Done with the current blend function
//glDisable(GL_BLEND);
}
Я пытаюсь создать куб с текстурой, которая имеет прозрачность, и в конечном итоге сделать лежащее в основе лица. Я прикрепил свою фактическую текстуру. Теперь это выглядит как куб, показывающий все лица без прозрачности, показывающие нижние грани. Если я раскомментирую подпрограммы blend, он рисует прозрачный куб, который смешивается на фоне, но другие лица.
Вот часть того, как я загружаю свою текстуру:
_effect = [[GLKBaseEffect alloc] init];
NSDictionary * options = @{ GLKTextureLoaderOriginBottomLeft: @YES };
NSError *error;
NSString *path = [[NSBundle mainBundle] pathForResource:@"Texture200x200" ofType:@"png"];
GLKTextureInfo *info = [GLKTextureLoader textureWithContentsOfFile:path options:options error:&error];
if (info == nil) {
NSLog(@"Error loading file: %@", error.localizedDescription);
}
[[[self effect] texture2d0] setName:info.name];
[[[self effect] texture2d0] setEnabled:YES];
[[[self effect] texture2d0] setEnvMode:GLKTextureEnvModeDecal];
текстура просто Poka точек текстуры с твердыми точками и отрицательным пространством быть полностью прозрачными. Я очень новичок в openGL. Спасибо вам за помощь!
Я включаю ссылку на то, что я пытаюсь выполнить. Просто, чтобы приблизиться к концу, и вы увидите, как текстуры смешиваются.
http://www.youtube.com/watch?v=TtK_8sddGaQ