【OpenGL】個人的逆引きリファレンス
- 個人的な覚書としての逆引きリファレンスです
- 今のところ OpenGL ES 2.0 のみを対象としています
- 思いついたら追加していきます
現在のフレームバッファ(カラーバッファ)のサイズを取得する
bool GetCurrentColorBufferSize( GLint& width, GLint& height ) { // 現在バインドされているフレームバッファ名を取得 GLint currentFrameBufferName = 0; glGetIntegerv( GL_FRAMEBUFFER_BINDING, ¤tFrameBufferName ); // フレームバッファがバインドされていないと情報が取得できない if ( currentFrameBufferName == 0 ) { return false; } // あとで元に戻すために現在バインドされているレンダーバッファ名を取得 GLint oldRenderBufferName = 0; glGetIntegerv( GL_RENDERBUFFER_BINDING, &oldRenderBufferName ); // 現在のフレームバッファにアタッチされているカラーバッファのレンダーバッファ名を取得 GLint colorBufferName = 0; glGetFramebufferAttachmentParameteriv( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &colorBufferName ); // カラーバッファがアタッチされていない? if ( colorBufferName == 0 ) { return false; } // レンダーバッファ(カラーバッファ)をバインド glBindRenderbuffer( GL_RENDERBUFFER, colorBufferName ); // カラーバッファの幅と高さを取得 glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width ); glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height ); // レンダーバッファのバインドを元に戻す glBindRenderbuffer( GL_RENDERBUFFER, oldRenderBufferName ); return true; }
iOSでデフォルトのフレームバッファをバインドする(GLKViewControllerを使用している場合)
GLKViewのbindDrawableメソッドを使う。GLKViewControllerのviewDidLoad呼び出し時などはフレームバッファがバインドされていないので、フレームバッファ関連のOpenGL関数を使うにはこの方法で事前にバインドしておく必要がある。
GLKView *view = (GLKView *)self.view;
[view bindDrawable];
リファレンス : bindDrawable - GLKView | Apple Developer Documentation
参考 : xcode - iOS GLKit and back to default framebuffer - Stack Overflow