Changeset 2839


Ignore:
Timestamp:
Aug 2, 2013, 8:25:08 PM (6 years ago)
Author:
sam
Message:

gpu: add SetDepthMask/GetDepthMask to render contexts.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gpu/rendercontext.cpp

    r2828 r2839  
    6060    TrackedState<BlendFunc> m_blend_src, m_blend_dst;
    6161    TrackedState<DepthFunc> m_depth_func;
     62    TrackedState<DepthMask> m_depth_mask;
    6263    TrackedState<CullMode> m_cull_mode;
    6364    TrackedState<PolygonMode> m_polygon_mode;
     
    9596        g_renderer->SetDepthFunc(m_data->m_depth_func.GetValue());
    9697
     98    if (m_data->m_depth_mask.HasChanged())
     99        g_renderer->SetDepthMask(m_data->m_depth_mask.GetValue());
     100
    97101    if (m_data->m_cull_mode.HasChanged())
    98102        g_renderer->SetCullMode(m_data->m_cull_mode.GetValue());
     
    111115    g_renderer->SetViewport(viewport);
    112116}
     117
    113118ibox2 RenderContext::GetViewport()
    114119{
     
    195200}
    196201
     202void RenderContext::SetDepthMask(DepthMask mask)
     203{
     204    if (!m_data->m_depth_mask.HasChanged())
     205        m_data->m_depth_mask.TrackValue(g_renderer->GetDepthMask());
     206
     207    g_renderer->SetDepthMask(mask);
     208}
     209
     210DepthMask RenderContext::GetDepthMask()
     211{
     212    return g_renderer->GetDepthMask();
     213}
     214
    197215void RenderContext::SetCullMode(CullMode mode)
    198216{
  • trunk/src/gpu/renderer.cpp

    r2816 r2839  
    6464    BlendFunc m_blend_src, m_blend_dst;
    6565    DepthFunc m_depth_func;
     66    DepthMask m_depth_mask;
    6667    CullMode m_cull_mode;
    6768    PolygonMode m_polygon_mode;
     
    156157    m_data->m_depth_func = DepthFunc::Disabled;
    157158    SetDepthFunc(DepthFunc::LessOrEqual);
     159
     160    m_data->m_depth_mask = DepthMask::Disabled;
     161    SetDepthMask(DepthMask::Enabled);
    158162
    159163    m_data->m_cull_mode = CullMode::Disabled;
     
    602606
    603607/*
     608 * Depth mask
     609 */
     610
     611void Renderer::SetDepthMask(DepthMask mask)
     612{
     613    if (m_data->m_depth_mask == mask)
     614        return;
     615
     616#if defined USE_D3D9 || defined _XBOX
     617    if (mask == DepthMask::Disabled)
     618        m_data->m_d3d_dev->SetRenderState(D3DRS_ZWRITEENABLE, D3DZB_FALSE);
     619    else
     620        m_data->m_d3d_dev->SetRenderState(D3DRS_ZWRITEENABLE, D3DZB_TRUE);
     621#else
     622    if (mask == DepthMask::Disabled)
     623        glDepthMask(GL_FALSE);
     624    else
     625        glDepthMask(GL_TRUE);
     626#endif
     627
     628    m_data->m_depth_mask = mask;
     629}
     630
     631DepthMask Renderer::GetDepthMask() const
     632{
     633    return m_data->m_depth_mask;
     634}
     635
     636/*
    604637 * Face culling
    605638 */
  • trunk/src/lol/gpu/rendercontext.h

    r2828 r2839  
    3434    void SetBlendFunc(BlendFunc src, BlendFunc dst);
    3535    void SetDepthFunc(DepthFunc func);
     36    void SetDepthMask(DepthMask mask);
    3637    void SetCullMode(CullMode mode);
    3738    void SetPolygonMode(PolygonMode mode);
     
    4546    BlendFunc GetBlendFuncDst();
    4647    DepthFunc GetDepthFunc();
     48    DepthMask GetDepthMask();
    4749    CullMode GetCullMode();
    4850    PolygonMode GetPolygonMode();
  • trunk/src/lol/gpu/renderer.h

    r2816 r2839  
    124124};
    125125
     126/* A safe enum to indicate the depth mask. */
     127struct DepthMask
     128{
     129    enum Value
     130    {
     131        Disabled,
     132        Enabled,
     133    }
     134    m_value;
     135
     136    inline DepthMask() : m_value(Disabled) {}
     137    inline DepthMask(Value v) : m_value(v) {}
     138    inline operator Value() { return m_value; }
     139};
     140
    126141/* A safe enum to indicate the alpha test mode. */
    127142struct AlphaFunc
     
    181196    DepthFunc GetDepthFunc() const;
    182197
     198    void SetDepthMask(DepthMask mask);
     199    DepthMask GetDepthMask() const;
     200
    183201    void SetCullMode(CullMode mode);
    184202    CullMode GetCullMode() const;
  • trunk/tools/neercs/term/pty.cpp

    r2816 r2839  
    179179                    sent += nr;
    180180
    181                 if (sent >= 0)
    182                     return sent;
     181                return sent;
    183182            }
    184183        }
  • trunk/tools/neercs/video/render.cpp

    r2817 r2839  
    862862int Render::InitDrawResources(void)
    863863{
    864     glDepthMask(GL_TRUE);     // do not write z-buffer
    865 
    866864    /* initialise framebuffer objects */
    867865    fbo_back = new Framebuffer(screen_size);
     
    14801478    rc.SetBlendFunc(BlendFunc::Disabled, BlendFunc::Disabled);
    14811479    rc.SetDepthFunc(DepthFunc::Disabled);
     1480    rc.SetDepthMask(DepthFunc::Disabled);
    14821481
    14831482    glEnableClientState(GL_VERTEX_ARRAY);
     
    17261725        Ticker::Unref(m_fps_debug);
    17271726}
     1727
Note: See TracChangeset for help on using the changeset viewer.