আংশিক স্বচ্ছ একটি টেক্সচার রেন্ডার কিভাবে?


13

গুড মর্নিং স্ট্যাকওভারফ্লো, এখনই আমি কিছুটা সমস্যা নিয়ে আসছি কারণ ওপেনজিএল দিয়ে স্বচ্ছভাবে কোনও জমিনের অংশ সরবরাহ করার উপায় খুঁজে পাচ্ছি না বলে মনে হচ্ছে।

এখানে আমার সেটিংটি রয়েছে: আমার একটি কোয়াড রয়েছে, যা একটি প্রাচীর উপস্থাপন করে, এই টেক্সচারটি দিয়ে covered াকা (আপলোডের উদ্দেশ্যে পিএনজিতে রূপান্তরিত)। স্পষ্টতই, আমি গ্লাসের প্যানগুলি বাদ দিয়ে প্রাচীরটিকে অস্বচ্ছ হতে চাই। প্রাচীরের পিছনে আরও একটি বিমান রয়েছে যা ল্যান্ডস্কেপ দেখানোর কথা। আমি জানালার পিছন থেকে ল্যান্ডস্কেপ দেখতে চাই। প্রতিটি টেক্সচার আলফা চ্যানেল সহ একটি টিজিএ।

"ল্যান্ডস্কেপ" প্রথমে রেন্ডার করা হয়, তারপরে প্রাচীর। আমি ভেবেছিলাম এই প্রভাব অর্জনের পক্ষে এটি যথেষ্ট হবে তবে দৃশ্যত এটি এরকম নয়। উইন্ডোর যে অংশটি স্বচ্ছ বলে মনে হচ্ছে তা কালো এবং ল্যান্ডস্কেপ কেবল তখনই প্রদর্শিত হবে যখন আমি প্রাচীরের পাশ দিয়ে যাব।

এটি সক্ষম করার পরে আমি জিএলব্লেন্ডফঙ্ক () এর সাথে ঝাঁকুনির চেষ্টা করেছি তবে এটি কৌশলটি মনে হচ্ছে না।

আমি কি একটি গুরুত্বপূর্ণ পদক্ষেপ ভুলে যাচ্ছি?

ধন্যবাদ :)


হ্যালো, gdse এ আপনাকে স্বাগতম। আমি সামান্য সম্পাদনা করেছি, আমরা প্রশ্নগুলিতে বেশি শিরোনামে ট্যাগ লাগানো পছন্দ করি না (বিশেষত আপনি যখন ট্যাগগুলিতে একই ট্যাগ ব্যবহার করেন :))) এবং আপনার প্রশ্ন। আপনি কি স্থির পাইপলাইন বা আপনার নিজের ছায়া গো ব্যবহার করছেন?
নোটবেইন

সম্পাদনার জন্য আপনাকে ধন্যবাদ। আমি "স্থির পাইপলাইন" এর অর্থ সম্পর্কে নিশ্চিত নই তবে আমি প্রতিটি ভার্টেক্স নিজেই তৈরি করি এবং আমি কোনও শেডার ব্যবহার করি না। যদি তা গুরুত্বপূর্ণ হয় তবে আমি ওপেনজিএল এর শেষ সংস্করণটি স্কুল স্কিপমেন্টের জন্য ব্যবহার করছি না (আমার মনে হয় এটি ওপেনজিএল 3)।
মেগামুস্তে

ছবিটি আপনার প্রশ্নের মধ্যে অন্তর্ভুক্ত করতে পারলে দুর্দান্ত হবে। মনে হয় এটির আসল অবস্থান থেকে অদৃশ্য হয়ে গেছে।
বা ম্যাপার

উত্তর:


19

আপনি যা কিছু বলেছেন তার সাথেও (আলফা চ্যানেলগুলির সাথে টেক্সচার, প্রাচীর + উইন্ডো আঁকার আগে ল্যান্ডস্কেপ অঙ্কন), আপনাকে আরও দুটি জিনিস করতে হবে।

প্রথমত, আপনাকে ওপেনএল-এর মিশ্রণ কার্যকারিতা সক্ষম করতে হবে:

glEnable(GL_BLEND);

দ্বিতীয়ত, আপনাকে কীভাবে মিশ্রিত পিক্সেলের রঙগুলি গণনা করতে হবে ওপেনজিএলকে বলতে হবে (যা ওপেনজিএল "ঘটনাক্রমে" টুকরা "বলে) calls এই ক্ষেত্রে, আপনি এর মতো সহজ কিছু দিয়ে ভাল থাকবেন:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

একবার মিশ্রণটি চালু হয়ে গেলে, ওপেনজিএল আপনাকে গ্লোব্লেন্ডফঙ্কে দেওয়া ফাংশন পরামিতি অনুসারে পিক্সেল রঙগুলিকে একত্রিত করবে। বিশেষত, এটি "সোর্স কোডার * সোর্স.এলফা + গন্তব্য কোডার * (১-উত্স.আলফা)" করবে, যেখানে "উত্স" আপনি বর্তমানে রচনা করছেন এমন টেক্সচার এবং "গন্তব্য" এটি ইতিমধ্যে রঙে রয়েছে ফ্রেমবফার (ল্যান্ডস্কেপ) সুতরাং যেখানেই আপনার আলফা চ্যানেল সাদা, আপনি প্রাচীরের রঙ পাবেন এবং যেখানেই আলফা চ্যানেল কালো সেখানে আপনি ল্যান্ডস্কেপ রঙ পাবেন। যদি আলফা চ্যানেল ধূসর হয়, তবে আপনি দুটি রঙের মধ্যে কিছু ক্রস ফেইড পাবেন।

যদি আপনার উইন্ডোটি সম্পূর্ণ স্বচ্ছ হয় তবে এটি করার অন্যান্য উপায়ও রয়েছে, যেখানে আপনি দুটি বহুভুজ আঁকেন ক্রমটি গুরুত্বপূর্ণ নয়, তবে এটি আলফা প্রান্তিকের মতো আরও উন্নত ধারণাগুলিতে প্রবেশ শুরু করে। আপনার বর্তমান পরিস্থিতির জন্য সম্ভবত প্রয়োজন নেই।

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