Bir nesne grubunun örtüşen bir nesne koleksiyonu olduğu tüm nesne gruplarını bularak başlayın. Standart çarpışma algılama işi yapmalıdır. Her gruba benzersiz bir renk atayın. Herhangi bir renk olurdu.
Grup rengini kullanarak tüm nesnelerinizi düz renkler olarak bir dokuya dönüştürün.
Oluşturma hedefiyle aynı boyutlara sahip yeni bir anahat dokusu oluşturun. Oluşturma hedefinin her bir metnini tarayın ve çevresindeki herhangi bir metinden farklı bir renk olup olmadığını belirleyin. Öyleyse, anahat dokusundaki karşılık gelen texeli istediğiniz çizgi rengiyle değiştirin.
Son olarak, bu anahat dokusunu alın ve ekranda çizmek istediğiniz görüntünün üzerine getirin (elbette bunu bir parça gölgelendiricideki kenar algılama ile aynı anda yapabilir ve ilkinde kenar dokusu oluşturmaktan kaçınabilirsiniz. yer).
Bu adımı cpu üzerinde, oluşturma hedefinin metinlerinden geçmek için bir for döngüsü kullanarak gerçekleştirirseniz, bu oldukça yavaş olacaktır, ancak bazı durumlarda test etmek ve hatta kullanmak için yeterince iyi olacaktır. Bunu gerçek zamanlı olarak kullanmak için, bunu bir gölgelendiricide kullanmak en iyisidir.
Bu kenar algılamasını yapmak için bir parça gölgelendirici şöyle görünebilir;
precision mediump float;
uniform sampler2D s_texture;
varying vec2 v_texCoord;
void main()
{
gl_FragColor = vec4(0.0);
vec4 baseColor = texture2D(s_texture, v_texCoord);
gl_FragColor += baseColor - texture2D(s_texture, top);
gl_FragColor += baseColor - texture2D(s_texture, topRight);
gl_FragColor += baseColor - texture2D(s_texture, right);
gl_FragColor += baseColor - texture2D(s_texture, bottomRight);
gl_FragColor += baseColor - texture2D(s_texture, bottom);
gl_FragColor += baseColor - texture2D(s_texture, bottomLeft);
gl_FragColor += baseColor - texture2D(s_texture, left);
gl_FragColor += baseColor - texture2D(s_texture, topLeft);
}
Texture2D aramasındaki ikinci değer v_texCoord'a göre 2d koordinattır. Bunu, ilk oluşturma hedefini tam ekran dörtlü doku olarak oluşturarak uygularsınız. Bu, guassian blur gibi tam ekran bulanıklaştırma efektlerini nasıl uygulayacağınıza benzer.
İlk oluşturma hedefini düz renklerle kullanmanın nedeni, üst üste binen farklı nesneler arasında algılanan kenar olmadığından emin olmaktır. Ekran görüntüsünde sadece kenar algılaması yaptıysanız, büyük olasılıkla örtüşmelerdeki kenarları da algıladığını görürsünüz (nesnelerin farklı renklere / dokulara / aydınlatmaya sahip olduğu varsayılarak).