2012-06-15 2 views
0

Я пытаюсь сделать приложение, которое имеет функциональность рисования. В этом я должен предоставить такие функции, как SPRAY PAINT.рисовать как спрей-краска с использованием opengl для iPhone

Я сделал код как

static GLfloat*  vertexBuffer = NULL; 

static NSUInteger vertexMax = 64; 

NSUInteger   vertexCount = 0, 
        count, 
        i; 

[EAGLContext setCurrentContext:context]; 
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); 

// Convert locations from Points to Pixels 
CGFloat scale = self.contentScaleFactor; 
start.x *= scale; 
start.y *= scale; 
end.x *= scale; 
end.y *= scale; 

// Allocate vertex array buffer 
if(vertexBuffer == NULL) 
    vertexBuffer = malloc(vertexMax * 2 * sizeof(GLfloat)); 

// Add points to the buffer so there are drawing points every X pixels 
count = MAX(ceilf(sqrtf((end.x - start.x) * (end.x - start.x) + (end.y - start.y) * (end.y - start.y))/kBrushPixelStep), 1); 
for(i = 0; i < count; ++i) { 
    if(vertexCount == vertexMax) { 
     vertexMax = 2 * vertexMax; 
     vertexBuffer = realloc(vertexBuffer, vertexMax * 2 * sizeof(GLfloat)); 
    } 

    vertexBuffer[2 * vertexCount + 0] = start.x + (end.x - start.x) * ((GLfloat)i/(GLfloat)count); 
    vertexBuffer[2 * vertexCount + 1] = start.y + (end.y - start.y) * ((GLfloat)i/(GLfloat)count); 
    vertexCount += 1; 
} 

// Render the vertex array 
glVertexPointer(2, GL_FLOAT, 0, vertexBuffer); 
glDrawArrays(GL_POINTS, 01, vertexCount); 
glStencilMask(GL_STENCIL_VALUE_MASK); 
glDepthMask(GL_FALSE); 
// Display the buffer 
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); 
[context presentRenderbuffer:GL_RENDERBUFFER_OES]; 

Теперь, что дополнительный код мне нужно сделать для краски, которая будет выглядеть аэрозольной краской?

This code will make color like image as I attached

+0

Похоже, я бы ожидал, что краска для распыления на iPhone будет выглядеть ... У краски на спрей больше переменных, чем вы можете представить с помощью сенсорного ui ... Как расстояние и вектор ... Я думаю, вы могли бы позволить ему преодолеть насыщен и капель. –

ответ

4

Существует apple sample code, показывающий, как это сделать. Почему бы не начать с этого?

Смежные вопросы