ব্যাকগ্রাউন্ড পিক্সেলের রঙ কীভাবে রূপান্তর করা যায়


10

আমি জাভা এবং jMonkeyEngine ব্যবহার করে একটি গেম এবং মানচিত্র সম্পাদক লিখছি। মানচিত্র সম্পাদকে, আমি ওয়্যারফ্রেমেড গোলক দ্বারা একটি ব্রাশ পেয়েছি। আমার সমস্যাটি হ'ল: আমি এটিকে সর্বত্র দৃশ্যমান করতে চাই, তাই আমি এই ব্রাশটির "পিছনে" পিক্সেলের রঙটি উল্টাতে চাই। আমি এটি ফ্র্যাগমেন্ট শেডার (জিএলএসএল) দিয়ে করতে চেয়েছিলাম, তবে কীভাবে এই পিক্সেলের রঙ পাবেন তা আমি জানি না।


JMonkeyEngine পোস্ট-প্রক্রিয়া প্রভাব সমর্থন করে? আপনাকে সম্ভবত এই পথে যেতে হবে।
সাম হোচেভার

হ্যাঁ, jMonkeyEngine পোস্ট-প্রক্রিয়া প্রভাবগুলিকে সমর্থন করে তবে আমি এই মুহুর্তে তাদের সাথে খুব বেশি পরিচিত নই। পরামর্শের জন্য ধন্যবাদ।
m4tx

এমএমএমএইচ, কিছুই নয়, আরও সহজ উপায় আছে। আমি সঠিকভাবে উত্তর দেওয়ার চেষ্টা করব।
সাম হোসেভর

আপনি কি glLogicOp (GL_XOR) ব্যবহার করতে পারেন? opengl.org/sdk/docs/man/xhtml/glLogicOp.xml
অ্যাডাম

1
নোট করুন যে বিপর্যয় আপনাকে অসম্পৃক্ত গ্রেগুলির মতো কর্নারের পুরো গোষ্ঠীতে দৃশ্যমানতার গ্যারান্টি দেয় না এবং অন্যান্য অনেক ক্ষেত্রে দরিদ্র দৃশ্যমানতা সরবরাহ করে।
লার্স ভিক্লুন্ড 16

উত্তর:


16

এটি করার দ্রুত এবং সহজ উপায় হ'ল নিম্নলিখিত প্যারামিটারগুলির সাথে মানক মিশ্রণ সমীকরণটি ব্যবহার করা:

glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);

যদি srcউত্সের রঙ হয় (আপনার নতুন অবজেক্ট থেকে একটি) এবং dstগন্তব্য রঙ হয় (ফ্রেমবফারের মধ্যে একটি) এটি নতুন রঙটি নিম্নরূপে গণনা করবে:

new = src * (1 - dst) + dst * 0
    = src * (1 - dst)

সুতরাং আপনি ঠিক সেট করা প্রয়োজন src = 1, অর্থাত্। সাদা, এবং আপনি বিপরীত ভিডিও পাবেন। জিএলএসএল খণ্ডের শেডারটি হ'ল:

void main(void) {
    gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

4
মনে হচ্ছে আপনি নিজের আলফা মিশ্রণটি জানেন!
বোবোবো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.