Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenFlipper-Free
OpenFlipper
Commits
22a6e13e
Commit
22a6e13e
authored
May 25, 2018
by
Martin Schultz
Browse files
separated compatibility OpenGL code from TextNode
parent
04159341
Changes
3
Show whitespace changes
Inline
Side-by-side
libs_required/ACG/Scenegraph/TextNode.cc
View file @
22a6e13e
...
@@ -246,31 +246,29 @@ createMap() {
...
@@ -246,31 +246,29 @@ createMap() {
void
void
TextNode
::
TextNode
::
enter
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
/*_drawmode*/
)
{
enter
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
)
{
if
(
_state
.
compatibilityProfile
())
enterCompat
(
_state
,
_drawmode
);
else
{
if
(
text_
.
empty
())
if
(
text_
.
empty
())
return
;
return
;
// store current gl state
// store current gl state
cullFaceEnabled_
=
glIsEnabled
(
GL_CULL_FACE
);
cullFaceEnabled_
=
glIsEnabled
(
GL_CULL_FACE
);
texture2dEnabled_
=
glIsEnabled
(
GL_TEXTURE_2D
);
blendEnabled_
=
glIsEnabled
(
GL_BLEND
);
blendEnabled_
=
glIsEnabled
(
GL_BLEND
);
depthEnabled_
=
glIsEnabled
(
GL_DEPTH_TEST
);
depthEnabled_
=
glIsEnabled
(
GL_DEPTH_TEST
);
alphaTest_
=
glIsEnabled
(
GL_ALPHA_TEST
);
if
(
alphaTest_
)
ACG
::
GLState
::
getAlphaFunc
(
&
alphaTestFunc_
,
&
alphaTestValue_
);
glGetIntegerv
(
GL_BLEND_SRC
,
&
blendSrc_
);
glGetIntegerv
(
GL_BLEND_SRC
,
&
blendSrc_
);
glGetIntegerv
(
GL_BLEND_DST
,
&
blendDest_
);
glGetIntegerv
(
GL_BLEND_DST
,
&
blendDest_
);
// set texture and drawing states
// set texture and drawing states
ACG
::
GLState
::
disable
(
GL_CULL_FACE
);
ACG
::
GLState
::
disable
(
GL_CULL_FACE
);
ACG
::
GLState
::
enable
(
GL_TEXTURE_2D
);
ACG
::
GLState
::
enable
(
GL_BLEND
);
ACG
::
GLState
::
enable
(
GL_BLEND
);
ACG
::
GLState
::
enable
(
GL_ALPHA_TEST
);
ACG
::
GLState
::
alphaFunc
(
GL_GREATER
,
0.2
f
);
ACG
::
GLState
::
blendFunc
(
GL_SRC_ALPHA
,
GL_ONE_MINUS_SRC_ALPHA
);
ACG
::
GLState
::
blendFunc
(
GL_SRC_ALPHA
,
GL_ONE_MINUS_SRC_ALPHA
);
if
(
alwaysOnTop_
)
if
(
alwaysOnTop_
)
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
}
}
}
...
@@ -280,27 +278,26 @@ enter(GLState& _state, const DrawModes::DrawMode& /*_drawmode*/) {
...
@@ -280,27 +278,26 @@ enter(GLState& _state, const DrawModes::DrawMode& /*_drawmode*/) {
void
void
TextNode
::
TextNode
::
leave
(
GLState
&
/*_state*/
,
const
DrawModes
::
DrawMode
&
/*_drawmode*/
)
{
leave
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
)
{
if
(
_state
.
compatibilityProfile
())
leaveCompat
(
_state
,
_drawmode
);
else
{
if
(
text_
.
empty
())
if
(
text_
.
empty
())
return
;
return
;
// restore the GLState as it was when entering TextNode
// restore the GLState as it was when entering TextNode
if
(
cullFaceEnabled_
)
if
(
cullFaceEnabled_
)
ACG
::
GLState
::
enable
(
GL_CULL_FACE
);
ACG
::
GLState
::
enable
(
GL_CULL_FACE
);
if
(
!
texture2dEnabled_
)
ACG
::
GLState
::
disable
(
GL_TEXTURE_2D
);
if
(
!
blendEnabled_
)
if
(
!
blendEnabled_
)
ACG
::
GLState
::
disable
(
GL_BLEND
);
ACG
::
GLState
::
disable
(
GL_BLEND
);
if
(
depthEnabled_
)
if
(
depthEnabled_
)
ACG
::
GLState
::
enable
(
GL_DEPTH_TEST
);
ACG
::
GLState
::
enable
(
GL_DEPTH_TEST
);
else
else
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
if
(
!
alphaTest_
)
ACG
::
GLState
::
disable
(
GL_ALPHA_TEST
);
else
ACG
::
GLState
::
alphaFunc
(
alphaTestFunc_
,
alphaTestValue_
);
ACG
::
GLState
::
blendFunc
(
blendSrc_
,
blendDest_
);
ACG
::
GLState
::
blendFunc
(
blendSrc_
,
blendDest_
);
}
}
}
...
...
libs_required/ACG/Scenegraph/TextNode.hh
View file @
22a6e13e
...
@@ -131,9 +131,11 @@ public:
...
@@ -131,9 +131,11 @@ public:
/// set texture and drawing states
/// set texture and drawing states
void
enter
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
void
enter
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
void
enterCompat
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
/// restore texture and drawing states
/// restore texture and drawing states
void
leave
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
void
leave
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
void
leaveCompat
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
_drawmode
);
/// set RenderObject for Shader pipeline renderer
/// set RenderObject for Shader pipeline renderer
void
getRenderObjects
(
ACG
::
IRenderer
*
_renderer
,
ACG
::
GLState
&
_state
,
const
ACG
::
SceneGraph
::
DrawModes
::
DrawMode
&
_drawMode
,
const
ACG
::
SceneGraph
::
Material
*
_mat
);
void
getRenderObjects
(
ACG
::
IRenderer
*
_renderer
,
ACG
::
GLState
&
_state
,
const
ACG
::
SceneGraph
::
DrawModes
::
DrawMode
&
_drawMode
,
const
ACG
::
SceneGraph
::
Material
*
_mat
);
...
...
libs_required/ACG/Scenegraph/TextNodeGLCompat.cc
0 → 100644
View file @
22a6e13e
/*===========================================================================*\
* *
* OpenFlipper *
* Copyright (c) 2001-2015, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openflipper.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenFlipper. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
\*===========================================================================*/
/*===========================================================================*\
* *
* $Revision$ *
* $Author$ *
* $Date$ *
* *
\*===========================================================================*/
//=============================================================================
//
// CLASS TextNode - IMPLEMENTATION
//
//=============================================================================
//== INCLUDES =================================================================
#include <ACG/GL/acg_glew.hh>
#include "TextNode.hh"
#include "../Utils/ImageConversion.hh"
//== NAMESPACES ===============================================================
namespace
ACG
{
namespace
SceneGraph
{
//== IMPLEMENTATION ==========================================================
void
TextNode
::
enterCompat
(
GLState
&
_state
,
const
DrawModes
::
DrawMode
&
/*_drawmode*/
)
{
if
(
text_
.
empty
())
return
;
// store current gl state
cullFaceEnabled_
=
glIsEnabled
(
GL_CULL_FACE
);
texture2dEnabled_
=
glIsEnabled
(
GL_TEXTURE_2D
);
blendEnabled_
=
glIsEnabled
(
GL_BLEND
);
depthEnabled_
=
glIsEnabled
(
GL_DEPTH_TEST
);
//alphaTest_ = glIsEnabled(GL_ALPHA_TEST);
if
(
alphaTest_
)
ACG
::
GLState
::
getAlphaFunc
(
&
alphaTestFunc_
,
&
alphaTestValue_
);
glGetIntegerv
(
GL_BLEND_SRC
,
&
blendSrc_
);
glGetIntegerv
(
GL_BLEND_DST
,
&
blendDest_
);
// set texture and drawing states
ACG
::
GLState
::
disable
(
GL_CULL_FACE
);
ACG
::
GLState
::
enable
(
GL_TEXTURE_2D
);
ACG
::
GLState
::
enable
(
GL_BLEND
);
ACG
::
GLState
::
enable
(
GL_ALPHA_TEST
);
ACG
::
GLState
::
alphaFunc
(
GL_GREATER
,
0.2
f
);
ACG
::
GLState
::
blendFunc
(
GL_SRC_ALPHA
,
GL_ONE_MINUS_SRC_ALPHA
);
if
(
alwaysOnTop_
)
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
}
//----------------------------------------------------------------------------
void
TextNode
::
leaveCompat
(
GLState
&
/*_state*/
,
const
DrawModes
::
DrawMode
&
/*_drawmode*/
)
{
if
(
text_
.
empty
())
return
;
// restore the GLState as it was when entering TextNode
if
(
cullFaceEnabled_
)
ACG
::
GLState
::
enable
(
GL_CULL_FACE
);
if
(
!
texture2dEnabled_
)
ACG
::
GLState
::
disable
(
GL_TEXTURE_2D
);
if
(
!
blendEnabled_
)
ACG
::
GLState
::
disable
(
GL_BLEND
);
if
(
depthEnabled_
)
ACG
::
GLState
::
enable
(
GL_DEPTH_TEST
);
else
ACG
::
GLState
::
disable
(
GL_DEPTH_TEST
);
if
(
!
alphaTest_
)
ACG
::
GLState
::
disable
(
GL_ALPHA_TEST
);
else
ACG
::
GLState
::
alphaFunc
(
alphaTestFunc_
,
alphaTestValue_
);
ACG
::
GLState
::
blendFunc
(
blendSrc_
,
blendDest_
);
}
//=============================================================================
}
// namespace SceneGraph
}
// namespace ACG
//=============================================================================
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment