私はOpenGLプロジェクトをiOSに作成しようとしていますが、glViewportはその上で作業できません。iOS上でglViewportが動作しません
は、簡単なコード例を見て:
- (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];
}
私はglViewport内の任意のエフェクトを作る `tのないすべての変更を。
"initWithFrame:CGRectMake(100,100,300,300)"を追加しても機能しますが、実際にはglViewportが必要です。
私は間違っていますか?
ありがとう、それは私が必要とするように働いた。しかし、glViewportの本当の提案は何ですか?私がコメントすれば、何も変わらない。 –
@EduardoDória: 'glViewport'はレンダリングするプリミティブに影響を与えます:三角形や線など。クリア操作ではプリミティブがレンダリングされません。 –