zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

framebuffer.go (1517B)


      1 // Copyright 2014 Hajime Hoshi
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package opengl
     16 
     17 // framebuffer is a wrapper of OpenGL's framebuffer.
     18 type framebuffer struct {
     19 	graphics *Graphics
     20 	native   framebufferNative
     21 	width    int
     22 	height   int
     23 }
     24 
     25 // newFramebufferFromTexture creates a framebuffer from the given texture.
     26 func newFramebufferFromTexture(context *context, texture textureNative, width, height int) (*framebuffer, error) {
     27 	native, err := context.newFramebuffer(texture)
     28 	if err != nil {
     29 		return nil, err
     30 	}
     31 	return &framebuffer{
     32 		native: native,
     33 		width:  width,
     34 		height: height,
     35 	}, nil
     36 }
     37 
     38 // newScreenFramebuffer creates a framebuffer for the screen.
     39 func newScreenFramebuffer(context *context, width, height int) *framebuffer {
     40 	return &framebuffer{
     41 		native: context.getScreenFramebuffer(),
     42 		width:  width,
     43 		height: height,
     44 	}
     45 }
     46 
     47 func (f *framebuffer) delete(context *context) {
     48 	if !f.native.equal(context.getScreenFramebuffer()) {
     49 		context.deleteFramebuffer(f.native)
     50 	}
     51 }