menus...
	* view->show->Entity boxes (always show bbox for ents with model)
misc...
	FBO support
	* preferences->display->entities->Names Display Ratio (2D): hide names, if view_size/bbox_size > value; def = 64
This commit is contained in:
Garux 2017-08-02 09:41:22 +03:00
parent 8ca384165b
commit 7bb36b774c
15 changed files with 236 additions and 9 deletions

View File

@ -126,8 +126,12 @@ virtual void setLightRadii( bool lightRadii ) = 0;
virtual bool getLightRadii() = 0;
virtual void setShowNames( bool showNames ) = 0;
virtual bool getShowNames() = 0;
virtual void setShowBboxes( bool showBboxes ) = 0;
virtual bool getShowBboxes() = 0;
virtual void setShowNamesDist( int dist ) = 0;
virtual int getShowNamesDist() = 0;
virtual void setShowNamesRatio( int ratio ) = 0;
virtual int getShowNamesRatio() = 0;
virtual void setShowTargetNames( bool showNames ) = 0;
virtual bool getShowTargetNames() = 0;
virtual void setShowAngles( bool showAngles ) = 0;

View File

@ -1976,6 +1976,115 @@ typedef unsigned int GLhandleARB;
#endif
/* ----------------------- GL_ARB_framebuffer_object ----------------------- */
#ifndef GL_ARB_framebuffer_object
#define GL_ARB_framebuffer_object 1
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
#define GL_FRAMEBUFFER_DEFAULT 0x8218
#define GL_FRAMEBUFFER_UNDEFINED 0x8219
#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
#define GL_INDEX 0x8222
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
#define GL_DEPTH_STENCIL 0x84F9
#define GL_UNSIGNED_INT_24_8 0x84FA
#define GL_DEPTH24_STENCIL8 0x88F0
#define GL_TEXTURE_STENCIL_SIZE 0x88F1
#define GL_UNSIGNED_NORMALIZED 0x8C17
#define GL_SRGB 0x8C40
#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6
#define GL_FRAMEBUFFER_BINDING 0x8CA6
#define GL_RENDERBUFFER_BINDING 0x8CA7
#define GL_READ_FRAMEBUFFER 0x8CA8
#define GL_DRAW_FRAMEBUFFER 0x8CA9
#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA
#define GL_RENDERBUFFER_SAMPLES 0x8CAB
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
#define GL_COLOR_ATTACHMENT0 0x8CE0
#define GL_COLOR_ATTACHMENT1 0x8CE1
#define GL_COLOR_ATTACHMENT2 0x8CE2
#define GL_COLOR_ATTACHMENT3 0x8CE3
#define GL_COLOR_ATTACHMENT4 0x8CE4
#define GL_COLOR_ATTACHMENT5 0x8CE5
#define GL_COLOR_ATTACHMENT6 0x8CE6
#define GL_COLOR_ATTACHMENT7 0x8CE7
#define GL_COLOR_ATTACHMENT8 0x8CE8
#define GL_COLOR_ATTACHMENT9 0x8CE9
#define GL_COLOR_ATTACHMENT10 0x8CEA
#define GL_COLOR_ATTACHMENT11 0x8CEB
#define GL_COLOR_ATTACHMENT12 0x8CEC
#define GL_COLOR_ATTACHMENT13 0x8CED
#define GL_COLOR_ATTACHMENT14 0x8CEE
#define GL_COLOR_ATTACHMENT15 0x8CEF
#define GL_DEPTH_ATTACHMENT 0x8D00
#define GL_STENCIL_ATTACHMENT 0x8D20
#define GL_FRAMEBUFFER 0x8D40
#define GL_RENDERBUFFER 0x8D41
#define GL_RENDERBUFFER_WIDTH 0x8D42
#define GL_RENDERBUFFER_HEIGHT 0x8D43
#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
#define GL_STENCIL_INDEX1 0x8D46
#define GL_STENCIL_INDEX4 0x8D47
#define GL_STENCIL_INDEX8 0x8D48
#define GL_STENCIL_INDEX16 0x8D49
#define GL_RENDERBUFFER_RED_SIZE 0x8D50
#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
#define GL_MAX_SAMPLES 0x8D57
#define glBindFramebuffer GlobalOpenGL().m_glBindFramebuffer
#define glBindRenderbuffer GlobalOpenGL().m_glBindRenderbuffer
#define glBlitFramebuffer GlobalOpenGL().m_glBlitFramebuffer
#define glCheckFramebufferStatus GlobalOpenGL().m_glCheckFramebufferStatus
#define glDeleteFramebuffers GlobalOpenGL().m_glDeleteFramebuffers
#define glDeleteRenderbuffers GlobalOpenGL().m_glDeleteRenderbuffers
#define glFramebufferRenderbuffer GlobalOpenGL().m_glFramebufferRenderbuffer
#define glFramebufferTexture1D GlobalOpenGL().m_glFramebufferTexture1D
#define glFramebufferTexture2D GlobalOpenGL().m_glFramebufferTexture2D
#define glFramebufferTexture3D GlobalOpenGL().m_glFramebufferTexture3D
#define glFramebufferTextureLayer GlobalOpenGL().m_glFramebufferTextureLayer
#define glGenFramebuffers GlobalOpenGL().m_glGenFramebuffers
#define glGenRenderbuffers GlobalOpenGL().m_glGenRenderbuffers
#define glGenerateMipmap GlobalOpenGL().m_glGenerateMipmap
#define glGetFramebufferAttachmentParameteriv GlobalOpenGL().m_glGetFramebufferAttachmentParameteriv
#define glGetRenderbufferParameteriv GlobalOpenGL().m_glGetRenderbufferParameteriv
#define glIsFramebuffer GlobalOpenGL().m_glIsFramebuffer
#define glIsRenderbuffer GlobalOpenGL().m_glIsRenderbuffer
#define glRenderbufferStorage GlobalOpenGL().m_glRenderbufferStorage
#define glRenderbufferStorageMultisample GlobalOpenGL().m_glRenderbufferStorageMultisample
#endif /* GL_ARB_framebuffer_object */
#include "gtkutil/glfont.h"
/// \brief A module which wraps a runtime-binding of the standard OpenGL functions.
@ -2789,6 +2898,32 @@ struct OpenGLBinding
void ( QGL_DLLEXPORT* m_glProgramNamedParameter4fNV )( GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat );
void ( QGL_DLLEXPORT* m_glProgramNamedParameter4fvNV )( GLuint, GLsizei, const GLubyte *, const GLfloat * );
void ( QGL_DLLEXPORT* m_glGetProgramNamedParameterfvNV )( GLuint, GLsizei, const GLubyte *, GLfloat * );
// GL_ARB_framebuffer_object
bool support_ARB_framebuffer_object;
bool ARB_framebuffer_object(){
return support_ARB_framebuffer_object;
}
void ( QGL_DLLEXPORT * m_glBindFramebuffer )( GLenum target, GLuint framebuffer );
void ( QGL_DLLEXPORT * m_glBindRenderbuffer )( GLenum target, GLuint renderbuffer );
void ( QGL_DLLEXPORT * m_glBlitFramebuffer )( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter );
GLenum( QGL_DLLEXPORT * m_glCheckFramebufferStatus )( GLenum target );
void ( QGL_DLLEXPORT * m_glDeleteFramebuffers )( GLsizei n, const GLuint * framebuffers );
void ( QGL_DLLEXPORT * m_glDeleteRenderbuffers )( GLsizei n, const GLuint * renderbuffers );
void ( QGL_DLLEXPORT * m_glFramebufferRenderbuffer )( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer );
void ( QGL_DLLEXPORT * m_glFramebufferTexture1D )( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
void ( QGL_DLLEXPORT * m_glFramebufferTexture2D )( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level );
void ( QGL_DLLEXPORT * m_glFramebufferTexture3D )( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer );
void ( QGL_DLLEXPORT * m_glFramebufferTextureLayer )( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer );
void ( QGL_DLLEXPORT * m_glGenFramebuffers )( GLsizei n, GLuint * framebuffers );
void ( QGL_DLLEXPORT * m_glGenRenderbuffers )( GLsizei n, GLuint * renderbuffers );
void ( QGL_DLLEXPORT * m_glGenerateMipmap )( GLenum target );
void ( QGL_DLLEXPORT * m_glGetFramebufferAttachmentParameteriv )( GLenum target, GLenum attachment, GLenum pname, GLint * params );
void ( QGL_DLLEXPORT * m_glGetRenderbufferParameteriv )( GLenum target, GLenum pname, GLint * params );
GLboolean( QGL_DLLEXPORT * m_glIsFramebuffer )( GLuint framebuffer );
GLboolean( QGL_DLLEXPORT * m_glIsRenderbuffer )( GLuint renderbuffer );
void ( QGL_DLLEXPORT * m_glRenderbufferStorage )( GLenum target, GLenum internalformat, GLsizei width, GLsizei height );
void ( QGL_DLLEXPORT * m_glRenderbufferStorageMultisample )( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height );
};
#include "modulesystem.h"

View File

@ -675,4 +675,9 @@ namespace std
}
}
inline bool aabb_fits_view( const AABB& aabb, const Matrix4& viewport, int ratio ){
//return ( aabb.extents[0] / viewport[0] ) > 0.25f || ( aabb.extents[1] / viewport[5] ) > 0.25f;
return ( viewport[0] + viewport[5] ) / ( aabb.extents[0] + aabb.extents[1] ) < ratio;
}
#endif

View File

@ -363,7 +363,7 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l
renderer.addRenderable( m_curveCatmullRom.m_renderCurve, localToWorld );
}
if ( g_showNames || selected || childSelected ) {
if ( selected || childSelected || ( g_showNames && ( volume.fill() || aabb_fits_view( aabb_for_oriented_aabb( childBounds, volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) ) {
// draw models as usual
if ( !isModel() ) {
// don't draw the name for worldspawn

View File

@ -242,8 +242,9 @@ void detach( scene::Traversable::Observer* observer ){
}
void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& localToWorld, bool selected ) const {
if ( selected ) {
m_renderOrigin.render( renderer, volume, localToWorld );
if ( selected || g_showBboxes ) {
if( selected )
m_renderOrigin.render( renderer, volume, localToWorld );
renderer.PushState();
renderer.Highlight( Renderer::ePrimitive, false );
@ -253,7 +254,7 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l
renderer.PopState();
}
renderer.SetState( m_entity.getEntityClass().m_state_wire, Renderer::eWireframeOnly );
if ( g_showNames || selected ) {
if ( selected || ( g_showNames && ( volume.fill() || aabb_fits_view( aabb_for_oriented_aabb( m_aabb_local, volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) ) {
m_renderName.render( renderer, volume, localToWorld, selected );
}
}

View File

@ -113,7 +113,9 @@ EntityCreator::KeyValueChangedFunc KeyValue::m_entityKeyValueChanged = 0;
Counter* EntityKeyValues::m_counter = 0;
bool g_showNames = true;
bool g_showBboxes = false;
int g_showNamesDist = 512;
int g_showNamesRatio = 64;
bool g_showTargetNames = false;
bool g_showAngles = true;
bool g_lightRadii = true;
@ -267,12 +269,24 @@ void setShowNames( bool showNames ){
bool getShowNames(){
return g_showNames;
}
void setShowBboxes( bool showBboxes ){
g_showBboxes = showBboxes;
}
bool getShowBboxes(){
return g_showBboxes;
}
void setShowNamesDist( int dist ){
g_showNamesDist = dist;
}
int getShowNamesDist(){
return g_showNamesDist;
}
void setShowNamesRatio( int ratio ){
g_showNamesRatio = ratio;
}
int getShowNamesRatio(){
return g_showNamesRatio;
}
void setShowTargetNames( bool showNames ){
g_showTargetNames = showNames;
}
@ -383,7 +397,9 @@ void Entity_Construct( EGameType gameType ){
}
GlobalPreferenceSystem().registerPreference( "SI_ShowNames", BoolImportStringCaller( g_showNames ), BoolExportStringCaller( g_showNames ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowBboxes", BoolImportStringCaller( g_showBboxes ), BoolExportStringCaller( g_showBboxes ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowNamesDist", IntImportStringCaller( g_showNamesDist ), IntExportStringCaller( g_showNamesDist ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowNamesRatio", IntImportStringCaller( g_showNamesRatio ), IntExportStringCaller( g_showNamesRatio ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowTargetNames", BoolImportStringCaller( g_showTargetNames ), BoolExportStringCaller( g_showTargetNames ) );
GlobalPreferenceSystem().registerPreference( "SI_ShowAngles", BoolImportStringCaller( g_showAngles ), BoolExportStringCaller( g_showAngles ) );
GlobalPreferenceSystem().registerPreference( "LightRadiuses", BoolImportStringCaller( g_lightRadii ), BoolExportStringCaller( g_lightRadii ) );

View File

@ -39,7 +39,9 @@ void Entity_Construct( EGameType gameType = eGameTypeQuake3 );
void Entity_Destroy();
extern bool g_showNames;
extern bool g_showBboxes;
extern int g_showNamesDist;
extern int g_showNamesRatio;
extern bool g_showTargetNames;
extern bool g_showAngles;
extern bool g_lightRadii;

View File

@ -227,7 +227,7 @@ void renderWireframe( Renderer& renderer, const VolumeTest& volume, const Matrix
renderer.SetState( m_entity.getEntityClass().m_state_wire, Renderer::eWireframeOnly );
renderer.addRenderable( m_aabb_wire, localToWorld );
renderArrow( renderer, volume, localToWorld );
if ( g_showNames || selected ) {
if ( selected || ( g_showNames && aabb_fits_view( aabb_for_oriented_aabb( m_aabb_local, volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) {
m_renderName.render( renderer, volume, localToWorld, selected );
}
}

View File

@ -150,7 +150,7 @@ void detach( scene::Traversable::Observer* observer ){
void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& localToWorld, bool selected, bool childSelected, const AABB& childBounds ) const {
renderer.SetState( m_entity.getEntityClass().m_state_wire, Renderer::eWireframeOnly );
if ( g_showNames || selected || childSelected ) {
if ( selected || childSelected || ( g_showNames && ( volume.fill() || aabb_fits_view( aabb_for_oriented_aabb( childBounds, volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) ) {
// don't draw the name for worldspawn
if ( !strcmp( m_entity.getEntityClass().name(), "worldspawn" ) ) {
return;

View File

@ -1460,7 +1460,7 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l
}
}
if ( ( g_showNames || selected ) && !string_equal( m_named.name(), "light" ) ) {
if ( ( selected || ( g_showNames && ( volume.fill() || aabb_fits_view( aabb_for_oriented_aabb( m_aabb_light, volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) ) && !string_equal( m_named.name(), "light" ) ) {
m_renderName.render( renderer, volume, localToWorld, selected );
}
}

View File

@ -195,7 +195,7 @@ void renderSolid( Renderer& renderer, const VolumeTest& volume, const Matrix4& l
m_renderOrigin.render( renderer, volume, localToWorld );
}
renderer.SetState( m_entity.getEntityClass().m_state_wire, Renderer::eWireframeOnly );
if ( ( g_showNames || selected ) && !string_equal( m_named.name(), "misc_model" ) ) {
if ( ( selected || ( g_showNames && ( volume.fill() || aabb_fits_view( aabb_for_oriented_aabb( AABB( Vector3( 0, 0, 0 ), Vector3( 32, 32, 32 ) ), volume.GetModelview() ), volume.GetViewport(), g_showNamesRatio ) ) ) ) && !string_equal( m_named.name(), "misc_model" ) ) {
m_renderName.render( renderer, volume, localToWorld, selected );
}
}

View File

@ -588,11 +588,28 @@ void ShowNamesDistExport( EntityCreator& self, const IntImportCallback& importer
}
typedef ReferenceCaller1<EntityCreator, const IntImportCallback&, ShowNamesDistExport> ShowNamesDistExportCaller;
void ShowNamesRatioImport( EntityCreator& self, int value ){
self.setShowNamesRatio( value );
UpdateAllWindows();
}
typedef ReferenceCaller1<EntityCreator, int, ShowNamesRatioImport> ShowNamesRatioImportCaller;
void ShowNamesRatioExport( EntityCreator& self, const IntImportCallback& importer ){
importer( self.getShowNamesRatio() );
}
typedef ReferenceCaller1<EntityCreator, const IntImportCallback&, ShowNamesRatioExport> ShowNamesRatioExportCaller;
void Entity_constructPreferences( PreferencesPage& page ){
page.appendSpinner( "Names Display Distance", 512.0, 0.0, 200500.0,
page.appendSpinner( "Names Display Distance (3D)", 512.0, 0.0, 200500.0,
IntImportCallback( ShowNamesDistImportCaller( GlobalEntityCreator() ) ),
IntExportCallback( ShowNamesDistExportCaller( GlobalEntityCreator() ) )
);
page.appendSpinner( "Names Display Ratio (2D)", 64.0, 0.0, 100500.0,
IntImportCallback( ShowNamesRatioImportCaller( GlobalEntityCreator() ) ),
IntExportCallback( ShowNamesRatioExportCaller( GlobalEntityCreator() ) )
);
}
void Entity_constructPage( PreferenceGroup& group ){
PreferencesPage page( group.createPage( "Entities", "Entity Display Preferences" ) );

View File

@ -2038,6 +2038,7 @@ GtkMenuItem* create_view_menu( MainFrame::EViewStyle style ){
create_check_menu_item_with_mnemonic( menu_in_menu, "Show Entity _Names", "ShowNames" );
create_check_menu_item_with_mnemonic( menu_in_menu, "Entity Names = Targetnames", "ShowTargetNames" );
create_check_menu_item_with_mnemonic( menu_in_menu, "Show Light Radiuses", "ShowLightRadiuses" );
create_check_menu_item_with_mnemonic( menu_in_menu, "Show Entity Boxes", "ShowBboxes" );
menu_separator( menu_in_menu );

View File

@ -1453,6 +1453,39 @@ void QGL_sharedContextCreated( OpenGLBinding& table ){
globalOutputStream() << "No Anisotropic filtering available\n";
g_maxTextureAnisotropy = 0;
}
if ( QGL_ExtensionSupported( "GL_ARB_framebuffer_object" ) ) {
table.support_ARB_framebuffer_object =
QGL_constructExtensionFunc( table.m_glBindFramebuffer, "glBindFramebuffer" )
&& QGL_constructExtensionFunc( table.m_glBindRenderbuffer, "glBindRenderbuffer" )
&& QGL_constructExtensionFunc( table.m_glBlitFramebuffer, "glBlitFramebuffer" )
&& QGL_constructExtensionFunc( table.m_glCheckFramebufferStatus, "glCheckFramebufferStatus" )
&& QGL_constructExtensionFunc( table.m_glDeleteFramebuffers, "glDeleteFramebuffers" )
&& QGL_constructExtensionFunc( table.m_glDeleteRenderbuffers, "glDeleteRenderbuffers" )
&& QGL_constructExtensionFunc( table.m_glFramebufferRenderbuffer, "glFramebufferRenderbuffer" )
&& QGL_constructExtensionFunc( table.m_glFramebufferTexture1D, "glFramebufferTexture1D" )
&& QGL_constructExtensionFunc( table.m_glFramebufferTexture2D, "glFramebufferTexture2D" )
&& QGL_constructExtensionFunc( table.m_glFramebufferTexture3D, "glFramebufferTexture3D" )
&& QGL_constructExtensionFunc( table.m_glFramebufferTextureLayer, "glFramebufferTextureLayer" )
&& QGL_constructExtensionFunc( table.m_glGenFramebuffers, "glGenFramebuffers" )
&& QGL_constructExtensionFunc( table.m_glGenRenderbuffers, "glGenRenderbuffers" )
&& QGL_constructExtensionFunc( table.m_glGenerateMipmap, "glGenerateMipmap" )
&& QGL_constructExtensionFunc( table.m_glGetFramebufferAttachmentParameteriv, "glGetFramebufferAttachmentParameteriv" )
&& QGL_constructExtensionFunc( table.m_glGetRenderbufferParameteriv, "glGetRenderbufferParameteriv" )
&& QGL_constructExtensionFunc( table.m_glIsFramebuffer, "glIsFramebuffer" )
&& QGL_constructExtensionFunc( table.m_glIsRenderbuffer, "glIsRenderbuffer" )
&& QGL_constructExtensionFunc( table.m_glRenderbufferStorage, "glRenderbufferStorage" )
&& QGL_constructExtensionFunc( table.m_glRenderbufferStorageMultisample, "glRenderbufferStorageMultisample" );
if ( !table.support_ARB_framebuffer_object ) {
extension_not_implemented( "GL_ARB_framebuffer_object" );
}
}
else
{
table.support_ARB_framebuffer_object = false;
}
}
void QGL_sharedContextDestroyed( OpenGLBinding& table ){

View File

@ -3041,6 +3041,18 @@ void ShowNamesToggle(){
UpdateAllWindows();
}
void ShowBboxesExport( const BoolImportCallback& importer ){
importer( GlobalEntityCreator().getShowBboxes() );
}
typedef FreeCaller1<const BoolImportCallback&, ShowBboxesExport> ShowBboxesExportCaller;
ShowBboxesExportCaller g_show_bboxes_caller;
ToggleItem g_show_bboxes( g_show_bboxes_caller );
void ShowBboxesToggle(){
GlobalEntityCreator().setShowBboxes( !GlobalEntityCreator().getShowBboxes() );
g_show_bboxes.update();
UpdateAllWindows();
}
void ShowTargetNamesExport( const BoolImportCallback& importer ){
importer( GlobalEntityCreator().getShowTargetNames() );
}
@ -3164,6 +3176,7 @@ void XYShow_registerCommands(){
GlobalToggles_insert( "ShowAngles", FreeCaller<ShowAnglesToggle>(), ToggleItem::AddCallbackCaller( g_show_angles ) );
GlobalToggles_insert( "ShowNames", FreeCaller<ShowNamesToggle>(), ToggleItem::AddCallbackCaller( g_show_names ) );
GlobalToggles_insert( "ShowBboxes", FreeCaller<ShowBboxesToggle>(), ToggleItem::AddCallbackCaller( g_show_bboxes ) );
GlobalToggles_insert( "ShowTargetNames", FreeCaller<ShowTargetNamesToggle>(), ToggleItem::AddCallbackCaller( g_show_targetnames ) );
GlobalToggles_insert( "ShowBlocks", FreeCaller<ShowBlocksToggle>(), ToggleItem::AddCallbackCaller( g_show_blocks ) );
GlobalToggles_insert( "ShowCoordinates", FreeCaller<ShowCoordinatesToggle>(), ToggleItem::AddCallbackCaller( g_show_coordinates ) );