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( )); }
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; }
int height() { return _channel->getPixelViewport().h; }
int width() { return _channel->getPixelViewport().w; }
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; }
int screen_height() { return _channel->getPixelViewport().h / _channel->getViewport().h; }
int screen_width() { return _channel->getPixelViewport().w / _channel->getViewport().w; }