জিএলএসএল-এ কীওয়ার্ডগুলি ইন / আউট


46

আমি কীভাবে জিএলএসএল in/ outকীওয়ার্ডগুলি ব্যবহার করব তা সত্যই বুঝতে পারছি না এবং গুগল অপ্রচলিতভাবে অপ্রয়োজনীয় হয়ে উঠছে।

তারা ঠিক কি করবেন? উদাহরণস্বরূপ, আমি খণ্ডের শ্যাডারে ভার্টেক্সের পরিবর্তিত বিভিন্ন পরিবর্তনশীল সেটটি পাস করতে চাইলে আমি কীভাবে সেগুলি ব্যবহার করব?

আক্ষরিক অর্থে প্রতিটি টিউটোরিয়ালটিতে আমি varying/ attributeকীওয়ার্ড ব্যবহার করি এবং এটি সহায়ক নয়।

উত্তর:


65

স্টোরেজ কোয়ালিফায়ার inএবং outআসলে একটি উদ্দেশ্য যে রয়েছে এবং রহিত করে যে আছে varyingএবং attribute। তারা সংজ্ঞায়িত কি ভেরিয়েবল যথাক্রমে মধ্যে রাখে এবং আউট shader জন্য রাখে। দেখুন GLSL 4.2 রেফারেন্স কার্ড পৃষ্ঠা 7:

  • in: পূর্ববর্তী স্তর থেকে শ্যাডারে লিঙ্কেজ
  • out: একটি শেডার থেকে পরবর্তী পর্যায়ে লিঙ্কেজ
  • attribute: inভার্টেক্স শ্যাডার হিসাবে একই
  • varying: outভার্টেক্স শ্যাডার হিসাবে একই, inটুকরা শ্যাডার হিসাবে একই (দ্রষ্টব্য: এগুলি ভুলভাবে উল্লিখিত রেফারেন্স কার্ডের চারপাশে উল্টানো হয়))

পার্শ্ব নোটের সাহায্যে যে দ্বিতীয়টি হ'ল ধরণের হ'ল: তারা 4.2 মূল প্রোফাইলে উপস্থিত নেই, কেবলমাত্র সামঞ্জস্যতার প্রোফাইলে।


তারা ঠিক কি করবেন?

ব্যবহারের ক্ষেত্রে, একটি প্রবর্তন থেকে আধুনিক ওপেনগ্লে ভার্টেক্স শ্যাডারটি নিন। অধ্যায় 2.2: শেডার :

#version 110

attribute vec2 position;    
varying vec2 texcoord;

void main()
{
    gl_Position = vec4(position, 0.0, 1.0);
    texcoord = position * vec2(0.5) + vec2(0.5);
}

এটি 4.2 কোরতে আবার লিখতে হবে:

#version 420

in vec2 position;    
out vec2 texcoord;

void main()
{
    gl_Position = vec4(position, 0.0, 1.0);
    texcoord = position * vec2(0.5) + vec2(0.5);
}

সহায়তাকারী টিউটোরিয়াল

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


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