iOS開發(fā)中關(guān)于手寫簽批的實(shí)現(xiàn)已經(jīng)有很多了,Swift語言也有了幾個(gè)蛮穿。大部分基于CAShapeLayer钓账,或者CGContext開發(fā)。我今天介紹的這種是基于OpenGL题暖,在GLKView中繪制的效果按傅,感覺效果還可以。喜歡的朋友可以給個(gè)star胧卤。
項(xiàng)目地址:WFSignatureView
效果圖:
簡單介紹一下實(shí)現(xiàn)過程唯绍,在tap和pan相應(yīng)的操作中,把點(diǎn)加入到相應(yīng)的變量中灌侣,然后在更新視圖推捐,調(diào)用OpenGL的相應(yīng)接口綁定變量中點(diǎn)的數(shù)據(jù),進(jìn)行繪制侧啼。
核心代碼展示:
func?addVertex( length :?inout?uint, v :?UnsafeRawPointer) {
if?Int(length) >=?maxLength?{
return;
}
var?data :?UnsafeMutableRawPointer
data =?glMapBufferOES(UInt32(GL_ARRAY_BUFFER),?UInt32(GL_WRITE_ONLY_OES))
data = data +?MemoryLayout.size?*?Int(length)
memcpy(data, v,?MemoryLayout.size)
glUnmapBufferOES(GLenum(GL_ARRAY_BUFFER));
length +=?1
}
項(xiàng)目的難點(diǎn)還在于對OpenGL的API的運(yùn)用:
public?func?glBindVertexArrayOES(_?array:?GLuint)
public?func?glDrawArrays(_?mode:?GLenum,?_?first:?GLint,?_?count:?GLsizei)
第一次寫文字牛柒,希望大家喜歡。