Changeset 2591


Ignore:
Timestamp:
Mar 14, 2013, 5:32:32 PM (7 years ago)
Author:
touky
Message:

video : Added SetAlphaBlend() SetFaceCulling() SetCustomSize()
FrameBuffer : Added GetSize() & tweaked Bind()/Unbind() with size update for correct rendering.

Location:
trunk/src
Files:
5 edited

Legend:

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

    r2506 r2591  
    178178}
    179179
     180ivec2 FrameBuffer::GetSize() const
     181{
     182    return m_data->m_size;
     183}
     184
    180185void FrameBuffer::Bind()
    181186{
     
    191196    glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_data->m_fbo);
    192197#   endif
     198    //change viewport draw size
     199    Video::SetCustomSize(m_data->m_size);
    193200#endif
    194201}
     
    209216    m_data->m_back_surface->Release();
    210217#else
     218    //Restore viewport draw size
     219    Video::RestoreSize();
    211220#   if GL_VERSION_1_1 || GL_ES_VERSION_2_0
    212221    glBindFramebuffer(GL_FRAMEBUFFER, 0);
  • trunk/src/gpu/vertexbuffer.cpp

    r2506 r2591  
    164164    /* FIXME: this has nothing to do here! */
    165165    glFrontFace(GL_CCW);
    166     glEnable(GL_BLEND);
    167166    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    168167
     
    235234    /* FIXME: this has nothing to do here! */
    236235    glFrontFace(GL_CCW);
    237     glEnable(GL_BLEND);
    238236    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    239237
  • trunk/src/lol/gpu/framebuffer.h

    r2354 r2591  
    2929
    3030    ShaderTexture GetTexture() const;
     31    ivec2 GetSize() const;
    3132
    3233    void Bind();
  • trunk/src/video.cpp

    r2506 r2591  
    5454    static DebugRenderMode render_mode;
    5555    static bool face_culling;
     56    static bool alpha_blend;
    5657#if defined USE_D3D9 || defined _XBOX
    5758#   if defined USE_D3D9
     
    7071ivec2 VideoData::saved_viewport(0, 0);
    7172DebugRenderMode VideoData::render_mode = DebugRenderMode::Default;
    72 bool VideoData::face_culling;
     73bool VideoData::face_culling = true;
     74bool VideoData::alpha_blend = true;
    7375
    7476#if defined USE_D3D9 || defined _XBOX
     
    158160    SetClearColor(vec4(0.1f, 0.2f, 0.3f, 1.0f));
    159161    SetClearDepth(1.f);
     162    SetAlphaBlend(true);
    160163    SetDebugRenderMode(DebugRenderMode::Default);
     164}
     165
     166void Video::SetCustomSize(ivec2 size)
     167{
     168    ivec4 current_size(0);
     169#if defined USE_D3D9 || defined _XBOX
     170#   define STR0(x) #x
     171#   define STR(x) STR0(x)
     172#   pragma message(__FILE__ "(" STR(__LINE__) "): warning: Video::SetSize() not implemented")
     173#else
     174    glGetIntegerv(GL_VIEWPORT, (GLint*)&current_size);
     175    if (current_size.zw != size)
     176        glViewport(0, 0, size.x, size.y);
     177#endif
     178}
     179
     180void Video::RestoreSize()
     181{
     182    ivec4 current_size(0);
     183#if defined USE_D3D9 || defined _XBOX
     184#   define STR0(x) #x
     185#   define STR(x) STR0(x)
     186#   pragma message(__FILE__ "(" STR(__LINE__) "): warning: Video::SetSize() not implemented")
     187#else
     188    glGetIntegerv(GL_VIEWPORT, (GLint*)&current_size);
     189    if (current_size.zw != VideoData::saved_viewport)
     190        glViewport(0, 0, VideoData::saved_viewport.x, VideoData::saved_viewport.y);
     191#endif
    161192}
    162193
     
    216247}
    217248
     249void Video::SetFaceCulling(bool set)
     250{
     251#if defined USE_D3D9 || defined _XBOX
     252#   define STR0(x) #x
     253#   define STR(x) STR0(x)
     254#   pragma message(__FILE__ "(" STR(__LINE__) "): warning: Video::SetFaceCulling() not implemented")
     255#else
     256    VideoData::face_culling = set;
     257    if (set)
     258        glEnable(GL_CULL_FACE);
     259    else
     260        glDisable(GL_CULL_FACE);
     261#endif
     262}
     263
     264bool Video::HasFaceCulling()
     265{
     266    return VideoData::face_culling;
     267}
     268
     269void Video::SetAlphaBlend(bool set)
     270{
     271#if defined USE_D3D9 || defined _XBOX
     272#   define STR0(x) #x
     273#   define STR(x) STR0(x)
     274#   pragma message(__FILE__ "(" STR(__LINE__) "): warning: Video::SetAlphaBlend() not implemented")
     275#else
     276    VideoData::alpha_blend = set;
     277    if (set)
     278        glEnable(GL_BLEND);
     279    else
     280        glDisable(GL_BLEND);
     281#endif
     282}
     283
     284bool Video::HasAlphaBlend()
     285{
     286    return VideoData::alpha_blend;
     287}
     288
    218289void Video::SetClearColor(vec4 color)
    219290{
     
    253324#else
    254325            if (VideoData::render_mode == d && glIsEnabled(GL_CULL_FACE) == GL_TRUE)
    255                 glDisable(GL_CULL_FACE);
     326                SetFaceCulling(false);
    256327            else
    257                 glEnable(GL_CULL_FACE);
     328                SetFaceCulling(true);
    258329            glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    259330#endif
     
    266337#if defined USE_D3D9 || defined _XBOX
    267338#else
    268                 VideoData::face_culling = !VideoData::face_culling;
    269                 if (VideoData::face_culling)
    270                     glEnable(GL_CULL_FACE);
    271                 else
    272                     glDisable(GL_CULL_FACE);
     339                SetFaceCulling(!VideoData::face_culling);
    273340#endif
    274341            }
     
    277344#if defined USE_D3D9 || defined _XBOX
    278345#else
    279                 glDisable(GL_CULL_FACE);
     346                SetFaceCulling(false);
    280347#endif
    281348            }
  • trunk/src/video.h

    r2425 r2591  
    6767public:
    6868    static void Setup(ivec2 size);
     69    static void SetCustomSize(ivec2 size);
     70    static void RestoreSize();
    6971    static void Destroy();
    7072    static void SetFov(float theta);
    7173    static void SetDepth(bool set);
     74    static void SetFaceCulling(bool set);
     75    static bool HasFaceCulling();
     76    static void SetAlphaBlend(bool set);
     77    static bool HasAlphaBlend();
    7278    static void SetClearColor(vec4 color);
    7379    static void SetClearDepth(float f);
Note: See TracChangeset for help on using the changeset viewer.