Ejemplo n.º 1
0
CCGLProgram::~CCGLProgram()
{
#if ND_MOD
	DEC_CCOBJ("CCGLProgram");
#endif

    CCLOGINFO("cocos2d: %s %d deallocing 0x%X", __FUNCTION__, __LINE__, this);

    // there is no need to delete the shaders. They should have been already deleted.
    CCAssert( m_uVertShader == 0, "Vertex Shaders should have been already deleted");
    CCAssert( m_uFragShader == 0, "Vertex Shaders should have been already deleted");

    if (m_uProgram) 
    {
        ccGLDeleteProgram(m_uProgram);
    }

    tHashUniformEntry *current_element, *tmp;

    // Purge uniform hash
    HASH_ITER(hh, m_pHashForUniforms, current_element, tmp) {
        HASH_DEL(m_pHashForUniforms, current_element);
        free(current_element->value);
        free(current_element);
    }
Ejemplo n.º 2
0
bool GLProgram::link(void)
{    
    glLinkProgram(program_);

#if DEBUG
	GLint status;
    glValidateProgram(program_);
    
    glGetProgramiv(program_, GL_LINK_STATUS, &status);
    if (status == GL_FALSE) {
		CCLOG(@"cocos2d: ERROR: Failed to link program: %p", program_);
		if( vertShader_ )
			glDeleteShader( vertShader_ );
		if( fragShader_ )
			glDeleteShader( fragShader_ );
		ccGLDeleteProgram( program_ );
		vertShader_ = fragShader_ = program_ = 0;
        return false;
	}
#endif
    
    if (vertShader_)
        glDeleteShader(vertShader_);
    if (fragShader_)
        glDeleteShader(fragShader_);
	
	vertShader_ = fragShader_ = 0;
		
    return true;
}
Ejemplo n.º 3
0
GLProgram::~GLProgram(void)
{
    char* logchar = this->description();
    CCLOGINFO( "cocos2d: deallocing %s", logchar);
    delete (logchar);
    
    if (program_)
        ccGLDeleteProgram(program_);
    
}
Ejemplo n.º 4
0
GLProgram::~GLProgram()
{
    CCLOGINFO("cocos2d: %s %d deallocing %p", __FUNCTION__, __LINE__, this);

    // there is no need to delete the shaders. They should have been already deleted.
    CCAssert(_vertShader == 0, "Vertex Shaders should have been already deleted");
    CCAssert(_fragShader == 0, "Fragment Shaders should have been already deleted");

    if (_program) 
    {
        ccGLDeleteProgram(_program);
    }

    tHashUniformEntry *current_element, *tmp;

    // Purge uniform hash
    HASH_ITER(hh, _hashForUniforms, current_element, tmp)
    {
        HASH_DEL(_hashForUniforms, current_element);
        free(current_element->value);
        free(current_element);
    }