私はサイトを通じてopenglを学ぼうとしています。最初に例を見て、次に見ずに自分で試してみます。そうすれば、学習が改善されたことに自信が持てます。しかし、私は 20 日前から opengl のチュートリアルを見てきました。基本は非常に基本的なものであり、それを使用して非常に基本的なプログラムを実行しようとすると失敗します。
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;
}
私が正しく理解していれば、上記のコードはビューの背景を灰色に設定する必要があります。しかし、非常に単純な概念がいくつか欠けていると確信しています。誰かが指摘できれば、それは本当に素晴らしいことです。ありがとうございました