GLKView にある単一のコンテキストに追加するキューブ型のオブジェクトがいくつかあります。すべてのキューブは NSObject のサブクラスであり、それぞれ独自の基本効果があります。次のように、すべてのキューブに対して射影行列と基本効果を設定します。
self.effect = [[GLKBaseEffect alloc]init];
self.effect.transform.projectionMatrix = GLKMatrix4MakePerspective(45.0f,0.95f, 0.0f, 10.0f);
self.effect.transform.projectionMatrix = GLKMatrix4Translate(self.effect.transform.projectionMatrix, 0, 0.0, 2.0);
今、あたかもすべてが接続された投影を持っているかのように見えます。全部正面から見てみたいです。ただし、少しずらして配置すると、立方体の下部または上部が見えます。
上記のコード行に関するもう 1 つの点は、モデル ビュー マトリックスを z 軸に沿って少し移動して、適切にフレーム化する必要があることです。射影行列を少し戻すことはできませんか? いくつかの値を試しましたが、役に立ちませんでした。
コンテナのセットアップは次のようになります。
- (void)setupGL {
[EAGLContext setCurrentContext:self.context];
self.layer.contentsScale = 2.0;
// Create default framebuffer object.
glGenFramebuffers(1, &defaultFrameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, defaultFrameBuffer);
GLfloat coordToPixScale = 1.0;
glGenRenderbuffers(1, &depthBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, self.bounds.size.width * coordToPixScale, self.bounds.size.height * coordToPixScale);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);
glEnable(GL_DEPTH_TEST);
}
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
@synchronized(self){
self.opaque = NO;
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[cubes makeObjectsPerformSelector:@selector(draw)];
}
}
メソッドのキューブ配列では、配列に- (void)glkView:drawInRect:
追加されたすべてのキューブにメソッドを実行させ-draw
ます。
-(void)draw{
[self.effect prepareToDraw];
glBindTexture(GL_TEXTURE_2D, texture[2]);
glDrawArrays(GL_TRIANGLES, 0, 24);
}
誰かがこの問題に光を当てることができますか?