예제 #1
0
    void _textureDownload()
    {
        if( !_texture )
            _texture = new util::Texture( GL_TEXTURE_RECTANGLE_ARB,
                            _channel->getObjectManager().glewGetContext( ));

        const PixelViewport& pvp = _channel->getPixelViewport();
        _texture->copyFromFrameBuffer( GL_RGBA, pvp );
        // Needed as copyFromFrameBuffer only grows the texture!
        _texture->resize( pvp.w, pvp.h );
        _texture->download( buffer.getData( ));
    }
예제 #2
0
    bool _fboDownload()
    {
        const SystemWindow* sysWindow = _channel->getWindow()->getSystemWindow();
        const util::FrameBufferObject* fbo = sysWindow->getFrameBufferObject();
        if( !fbo || fbo->getColorTextures().size() != 1 )
            return false;

        const util::Texture* texture = fbo->getColorTextures().front();
        const PixelViewport& pvp = _channel->getPixelViewport();
        if( texture->getWidth() != pvp.w || texture->getHeight() != pvp.h )
            return false;

        texture->download( buffer.getData( ));
        return true;
    }
예제 #3
0
 int height() { return _channel->getPixelViewport().h; }
예제 #4
0
 int width() { return _channel->getPixelViewport().w; }
예제 #5
0
 float screen_pixel_aspect_ratio()
 {
     float pixels_per_unit_x = _channel->getPixelViewport().w / (_canvas_width * _channel->getViewport().w);
     float pixels_per_unit_y = _channel->getPixelViewport().h / (_canvas_height * _channel->getViewport().h);
     return pixels_per_unit_y / pixels_per_unit_x;
 }
예제 #6
0
 int screen_height() { return _channel->getPixelViewport().h / _channel->getViewport().h; }
예제 #7
0
 int screen_width() { return _channel->getPixelViewport().w / _channel->getViewport().w; }