Skip to content

Latest commit

 

History

History
62 lines (51 loc) · 1.85 KB

滤镜.md

File metadata and controls

62 lines (51 loc) · 1.85 KB
- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates;
{
    [GPUImageOpenGLESContext useImageProcessingContext];
    [self setFilterFBO];
    
    [filterProgram use];
    
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
	glActiveTexture(GL_TEXTURE2);
	glBindTexture(GL_TEXTURE_2D, filterSourceTexture);
    
	glUniform1i(filterInputTextureUniform, 2);	
    
    if (filterSourceTexture2 != 0)
    {
        glActiveTexture(GL_TEXTURE3);
        glBindTexture(GL_TEXTURE_2D, filterSourceTexture2);
        
        glUniform1i(filterInputTextureUniform2, 3);	
    }
    if (filterSourceTexture3 != 0)
    {
        glActiveTexture(GL_TEXTURE4);
        glBindTexture(GL_TEXTURE_2D, filterSourceTexture3);
        glUniform1i(filterInputTextureUniform3, 4);	
    }
    if (filterSourceTexture4 != 0)
    {
        glActiveTexture(GL_TEXTURE5);
        glBindTexture(GL_TEXTURE_2D, filterSourceTexture4);
        glUniform1i(filterInputTextureUniform4, 5);	
    }
    if (filterSourceTexture5 != 0)
    {
        glActiveTexture(GL_TEXTURE6);
        glBindTexture(GL_TEXTURE_2D, filterSourceTexture5);
        glUniform1i(filterInputTextureUniform5, 6);	
    }
    if (filterSourceTexture6 != 0)
    {
        glActiveTexture(GL_TEXTURE7);
        glBindTexture(GL_TEXTURE_2D, filterSourceTexture6);
        glUniform1i(filterInputTextureUniform6, 7);	
    }

    glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices);
	glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates);
    
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    
    for (id<GPUImageInput> currentTarget in targets)
    {
        [currentTarget setInputSize:inputTextureSize];
        [currentTarget newFrameReady];
    }
}