사이트를 통해 OpenGL을 배우려고합니다. 먼저 예제를 본 다음 그것을 보지 않고 직접 시도해 봅니다. 그렇게하면 학습이 향상되는 것에 확신을 가질 수 있습니다. 그러나 20 일이 지난 지금부터 OpenGL 튜토리얼을 보았습니다. 기본적인 기본 지식을 알고 있으며, 매우 기본적인 프로그램을 만들려고 할 때 실패합니다.오픈 GL 학습
나는 UIView 하위 클래스가 있으며 나는 opengl을 사용하여 간단한 삼각형을 그리려하고있다. 그러나 나는 심지어 배경색을 일정한 색으로 설정할 수없는 것처럼 보입니다. 내 UIView 하위 클래스는 이렇게됩니다.
@implementation GLView{
GLuint framebuffer;
GLuint renderbuffer;
EAGLContext *context;
}
+(Class)layerClass{
return [CAEAGLLayer class];
}
-(void)drawView{
glLoadIdentity();
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
CAEAGLLayer *layer = (CAEAGLLayer*)self.layer;
layer.opaque = YES;
[EAGLContext setCurrentContext:context];
if(!context){
NSLog(@"Could not create context");
}
glGenFramebuffers(1, &framebuffer);
glGenRenderbuffers(1, &renderbuffer);
glBindFramebuffer(GL_FRAMEBUFFER_OES, framebuffer);
glBindRenderbuffer(GL_RENDERBUFFER_OES, renderbuffer);
glFramebufferRenderbuffer(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, renderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(id<EAGLDrawable>)layer];
glViewport(0, 0, CGRectGetWidth(frame), CGRectGetHeight(frame));
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(id<EAGLDrawable>)self.layer];
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
[self drawView];
}
return self;
}
위의 코드는 내보기의 배경을 회색으로 설정해야합니다. 그러나 나는 아주 간단한 개념이 빠져 있다고 확신한다. 아무도 지적 할 수 없다면 정말 좋을 것입니다. 고마워요
glClear() 뒤에 glFlush()를 추가하더라도 아무 것도 렌더링하지 않습니다. 그건 그렇고, glFlush()는 모든 버퍼를 플러시하는 것입니까? 버퍼가 제대로 초기화되지 않았거나 아주 이상한 문제라고 생각됩니다. –