Saya akan sangat merekomendasikan menggunakan tekstur, seperti kata Dave. Ini mungkin terasa menyebalkan, tetapi itu akan memberikan kinerja yang jauh lebih baik, saya pikir.
Anda dapat mencoba mencari algoritma deteksi tepi . Jika Anda membuat jerat menggunakan pewarnaan simpul dengan warna solid dan nilai alfa sedang (untuk sedikit transparansi), dan kemudian menggunakan shader deteksi tepi, itu mungkin terlihat cukup baik. Itu tidak akan sama, tetapi Anda mungkin lebih menyukainya; atau mungkin tidak.
Kalau tidak, Anda mungkin melihat solusi dua langkah, menggambar poligon transparan (sekali lagi, mengatur warna titik ke warna solid dengan nilai alfa menengah), lalu mengatur glPolygonMode (GL_LINE) dan mengubah glLineWidth sesuai keinginan (mungkin berdasarkan objek) jarak) dan menggambar poligon lagi.
Ini agak terlambat dan saya mengalami kesulitan membaca ini, tetapi diskusi forum menunjuk ke PDF ini: Single-pass Wireframe Rendering . Saya minta maaf jika itu tidak relevan.
Saya tahu ini mungkin bukan yang Anda cari, tetapi sepertinya Vector Tanks hanya menggunakan model bertekstur. Teksturnya memberikan tampilan bingkai kawat, itu berjalan di iPod touch saya yang tidak mendukung shader.
sumber
Satu-satunya cara saya melihatnya dilakukan adalah dengan resolusi tinggi, sebagian besar tekstur hitam, seperti yang ada di Tron 2.0. Teksturnya hampir secara universal baik hitam pekat dengan batas tebal, berwarna, atau tekstur noise Perlin sederhana.
Mereka menerapkan beberapa post-processing sederhana untuk mencapai efek cahaya.
sumber
Anda bisa mencoba semacam fungsi jarak sederhana di pixel shader. Mungkin sesuatu seperti koordinat barycentric (menyimpan RGB yang berbeda di simpul dan rasteriser akan melakukan sebagian besar pekerjaan untuk Anda).
Kemudian shader piksel Anda akan memiliki informasi yang dibutuhkan tentang di mana pada poligon piksel saat ini - di dekat titik, dekat tepi, atau di tengah ...
Saya menduga dalam praktiknya akan lebih mudah untuk tekstur itu.
sumber
Bagaimana dengan ini: Ambil model Anda, dan miringkan tepi yang ingin Anda tampilkan sebagai garis besar. Warnai wajah yang dibuat dengan warna hijau buram yang cerah, sementara semua wajah tua berwarna hijau tembus gelap.
Ini tidak membutuhkan penggunaan pixel shader sama sekali. (Tidak ada tekstur, sebenarnya; hanya warna wajah.) Ini memang memerlukan beberapa model preprocessing pada bagian Anda, yang mungkin atau mungkin tidak menjadi masalah.
Anda tidak akan dapat melihat garis ketika permukaan miring tegak lurus terhadap tampilan. Jika hal ini mengganggu Anda, Anda dapat mengeluarkan sedikit permukaan miring, mewarnai ekstrusi seperti yang Anda inginkan. Anda dapat bermain-main dengan berbagai tingkat bevelling dan ekstrusi untuk membuat garis yang lebih tipis dan lebih tebal.
sumber