コード例 #1
0
void PGlTexture::setWrapModeInternal(PGLTextureWrapModeEnum wrapModeS,
    PGLTextureWrapModeEnum wrapModeT) 
{
    if (wrapModeS == P_GLTEXTURE_WRAPMODE_REPEAT)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_S, GL_REPEAT);
    }
    else if (wrapModeS == P_GLTEXTURE_WRAPMODE_CLAMP_TO_EDGE)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    }
    else if (wrapModeS == P_GLTEXTURE_WRAPMODE_MIRRORED_REPEAT)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
    }

    if (wrapModeT == P_GLTEXTURE_WRAPMODE_REPEAT)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_T, GL_REPEAT);
    }
    else if (wrapModeT == P_GLTEXTURE_WRAPMODE_CLAMP_TO_EDGE)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    }
    else if (wrapModeT == P_GLTEXTURE_WRAPMODE_MIRRORED_REPEAT)
    {
        glTexParameteri(m_target, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
    }
            
    pGlErrorCheckError();
}
コード例 #2
0
void PGlTexture::setMipmapInternal(pbool mipmap)
{
    if (mipmap)
    {
        m_bytes += m_bytes / 3;
        glGenerateMipmap(m_target);
        pGlErrorCheckError();
    }
}
コード例 #3
0
void PGlTexture::copyTexture(PGlTextureFormatEnum format, 
        puint32 x, puint32 y, puint32 width, puint32 height, puint32 border)
{
    PASSERT(m_target == GL_TEXTURE_2D);
    PASSERT(m_enabled);

    puint32 internalFormat;
    puint32 dataFormat;
    interpretFormat(format, internalFormat, dataFormat);
    glCopyTexImage2D(GL_TEXTURE_2D, 0, internalFormat, x, y, width, height, border);

    pGlErrorCheckError();
}
コード例 #4
0
puint32 PGlState::query(PGlStateQueryEnum flag)
{
    GLint ret;
    switch (flag)
    {
        case P_GLTEXTURE_UNIT_NUMBER:
            glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &ret);
            break;
        default:
            PLOG_WARNINGX(P_LOG_CHANNEL_OPENGLEGL, "unsupported query flag");
            break;
    }

    pGlErrorCheckError();

    return ret; 
}
コード例 #5
0
void PGlTexture::setFilteringInternal(PGlTextureFilteringEnum minFiltering, 
    PGlTextureFilteringEnum magFiltering)
{
    if (m_mipmap)
    {
        if (minFiltering == P_GLTEXTURE_FILTERING_NEAREST)
        {
            glTexParameteri(m_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
        }
        else
        {
            glTexParameteri(m_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
        }

        if (magFiltering == P_GLTEXTURE_FILTERING_NEAREST)
        {
            glTexParameteri(m_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        }
        else
        {
            glTexParameteri(m_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        }
    }
    else
    {
        if (minFiltering == P_GLTEXTURE_FILTERING_NEAREST)
        {
            glTexParameteri(m_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        }
        else
        {
            glTexParameteri(m_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        }

        if (magFiltering == P_GLTEXTURE_FILTERING_NEAREST)
        {
            glTexParameteri(m_target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        }
        else
        {
            glTexParameteri(m_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        }
    }
            
    pGlErrorCheckError();
}
コード例 #6
0
void PGlTexture::enable(puint32 textureUnit)
{
    PASSERT(!m_enabled);

    if (m_enabled)
    {
        return ;
    }

    m_enabled = true;
    
    glActiveTexture(GL_TEXTURE0 + textureUnit);
    glBindTexture(m_target, m_texture);

    m_textureUnit = textureUnit;

    pGlErrorCheckError();
}
コード例 #7
0
void PGlState::reset()
{
    // Reset the OpenGL states.

    // -------------------------------------------------------------- 
    // viewport
    // -------------------------------------------------------------- 
    m_viewport[0] = m_initialViewport[0]; 
    m_viewport[1] = m_initialViewport[1]; 
    m_viewport[2] = m_initialViewport[2]; 
    m_viewport[3] = m_initialViewport[3]; 

    glViewport(m_viewport[0], m_viewport[1], m_viewport[2], m_viewport[3]);
    
    // -------------------------------------------------------------- 
    // Color mask
    // -------------------------------------------------------------- 
    m_colorWriteEnabled[0] = true;
    m_colorWriteEnabled[1] = true;
    m_colorWriteEnabled[2] = true;
    m_colorWriteEnabled[3] = true;

    glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);

    // -------------------------------------------------------------- 
    // Clear color
    // -------------------------------------------------------------- 
    m_colorClearValue[0] = 0.5f;
    m_colorClearValue[1] = 0.5f;
    m_colorClearValue[2] = 0.5f;
    m_colorClearValue[3] = 0.0f;

    glClearColor(m_colorClearValue[0],
                 m_colorClearValue[1],
                 m_colorClearValue[2],
                 m_colorClearValue[3]);
    
    // -------------------------------------------------------------- 
    // Depth
    // -------------------------------------------------------------- 
    m_depthWriteEnabled = true;
    glDepthMask(GL_TRUE);
     
    m_depthClearValue = 1.0f;
    glClearDepthf(1.0f);
    m_depthTest = P_GLDEPTHTEST_DEFAULT;
    glDepthFunc(GL_LEQUAL);
    glEnable(GL_DEPTH_TEST);
    
    // -------------------------------------------------------------- 
    // Scissor
    // -------------------------------------------------------------- 
    m_scissorTestEnabled = false;
    glDisable(GL_STENCIL_TEST);

    m_scissor[0] = m_initialViewport[0];
    m_scissor[1] = m_initialViewport[1];
    m_scissor[2] = m_initialViewport[2];
    m_scissor[3] = m_initialViewport[3];
    glScissor(m_scissor[0], m_scissor[1], m_scissor[2], m_scissor[3]);

    // -------------------------------------------------------------- 
    // TODO: stencil
    // -------------------------------------------------------------- 

    // -------------------------------------------------------------- 
    // Blend
    // -------------------------------------------------------------- 
    m_blend = P_GLBLEND_DEFAULT;
    glDisable(GL_BLEND);
    
    // -------------------------------------------------------------- 
    // Culling
    // -------------------------------------------------------------- 
    m_cull = P_GLCULL_DEFAULT;
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);
    
    // -------------------------------------------------------------- 
    // End
    // -------------------------------------------------------------- 
    pGlErrorCheckError();
}