Blend Mode di Cocos2D dengan glBlendFunc

9

Kami telah mencoba mereplikasi mode blending paling umum yang tersedia di Photoshop dan Quartz 2D, tetapi kami hanya menghasilkan 3 dan itu setelah beberapa pencarian online lama.

Bagi siapa pun yang tertarik, ini dia:

  • Multiply = GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA
  • Layar = GL_MINUS_DST_COLOR, GL_ONE
  • Linear Dodge = GL_ONE, GL_ONE

Anda dapat mencoba ini dan mode lainnya dalam aksi online, di situs web yang sangat berguna ini: http://www.andersriggelsen.dk/glblendfunc.php

Sekarang, kami akan sangat menghargai jika ada yang bisa menyediakan kami dengan mode blending tambahan yang dapat kami buat ulang di dalam Cocos2D, karena pengalaman Open GL kami sangat, sangat terbatas.

Terima kasih sebelumnya!

Argiris

Argiris
sumber
1
Linear Dodge (Tambah) = GL_ONE, GL_ONE apakah ini berlaku untuk Anda sama seperti di andersriggelsen.dk/glblendfunc.php dan photoshop? itu membuat sprite transparan? tidak bekerja untuk saya
Rakka Rage

Jawaban:

4

Kabar buruknya adalah Anda tidak dapat menerapkan semua mode campuran photoshop dengan glBlendFunc, meskipun ada banyak kombinasi yang dapat Anda gunakan.

Kabar baiknya adalah, ketika Anda pindah ke shader, buku oranye (OpenGL Shading Language, http://www.amazon.com/exec/obidos/ASIN/0321637631/khongrou-20 ) berisi bab dengan shader untuk meniru paduan photoshop. mode.

Untungnya semua yang mungkin Anda butuhkan di dunia pra-shader adalah tiga mode campuran paling umum;

  • Tambahkan: GL_ONE, GL_ONE
  • Blend: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
  • Multiply: beragam, seperti yang Anda sebutkan: GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA

EDIT :

Pertanyaan terkait (hampir duplikat) pada stackoverflow: /programming/818230/photoshop-blending-mode-to-opengl-es-without-shaders

Photoshop blending shaders: http://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

Jari Komppa
sumber