Ich versuche ein OpenGL-Projekt für iOS zu erstellen, aber glViewport kann nicht daran arbeiten.glViewport funktioniert nicht unter iOS
Schauen Sie das einfache Codebeispiel:
- (void)viewDidLoad
{
[super viewDidLoad];
EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
[EAGLContext setCurrentContext:context];
const CGRect frame = [[UIScreen mainScreen] bounds];
//GLKView *glView = [[GLKView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];
GLKView* glView = [[GLKView alloc] initWithFrame:frame context:context];
[self.view addSubview:glView];
GLuint renderbuffer;
glGenRenderbuffers(1, &renderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)glView.layer];
GLuint framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer);
// Set the viewport
glViewport(100, 100, 300, 300);
// Clear
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
// Present renderbuffer
[context presentRenderbuffer:GL_RENDERBUFFER];
}
Änderungen ich in glViewport tue don `t irgendwelche Effekte machen.
Aber wenn ich "initWithFrame: CGRectMake (100, 100, 300, 300)" hinzufügen, wird es funktionieren, aber ich brauche wirklich glViewport.
Was mache ich falsch?
Danke, es hat funktioniert, was ich brauche. Aber was ist der wirkliche Vorschlag von glViewport? Wenn ich es kommentiere, wird sich im Bildschirm nichts ändern. –
@ EduardoDória: 'glViewport' wirkt sich auf Grundelemente aus, die Sie rendern: Dreiecke, Linien usw. Bei der Operation" Löschen "werden keine Grundelemente dargestellt. –