আমি ওপেনজিএল ইএস ২.০ শিখার চেষ্টা করছি এবং আমি ভাবছি যে শেডারগুলি "পরিচালনা" করার সবচেয়ে সাধারণ অনুশীলন কোনটি?
আমি এই প্রশ্নটি জিজ্ঞাসা করছি কারণ আমি যে উদাহরণগুলি খুঁজে পেয়েছি (এন্ড্রয়েড এসডিকে সরবরাহিত API ডেমোর অন্তর্ভুক্ত যেমন) আমি সাধারণত জিএলআরেন্ডারারের শ্রেণীর ভিতরে সমস্ত কিছু দেখতে পাই এবং আমি বরং আলাদা জিনিসগুলি রাখতে পারি যাতে আমার থাকতে পারে, উদাহরণস্বরূপ, একটি গ্ল্যামাইজ অবজেক্ট যা আমি যখনই টেক্সচার্ড কোয়াড আঁকতে চাই তখন আমি পুনরায় ব্যবহার করতে পারি (আমি কেবল এই মুহুর্তে 2 ডি তে ফোকাস করছি), যেমন আমার ওপেনগিএল ইএস 1.0 কোডটি ছিল। প্রায় প্রতিটি উদাহরণে আমি পেয়েছি, শেডারগুলি কেবল শ্রেণির বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করা হয়। উদাহরণ স্বরূপ:
public class Square {
public final String vertexShader =
"uniform mat4 uMVPMatrix;\n" +
"attribute vec4 aPosition;\n" +
"attribute vec4 aColor;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" gl_Position = uMVPMatrix * aPosition;\n" +
" vColor = aColor;\n" +
"}\n";
public final String fragmentShader =
"precision mediump float;\n" +
"varying vec4 vColor;\n" +
"void main() {\n" +
" gl_FragColor = vColor;\n" +
"}\n";
// ...
}
এই প্রশ্নগুলির মধ্যে কিছু বোবা থাকলে আমি আগাম ক্ষমা চাই, তবে আমি এর আগে শেডারের সাথে কখনও কাজ করি নি।
1) উপরের কোডটি শেডারগুলি (সর্বজনীন চূড়ান্ত শ্রেণীর বৈশিষ্ট্যগুলি) সংজ্ঞায়িত করার সাধারণ উপায়?
2) আমার আলাদা শেডার ক্লাস করা উচিত?
3) যদি শেডারগুলি তাদের ব্যবহার করা শ্রেণীর বাইরে সংজ্ঞায়িত করা হয়, তবে আমি কীভাবে তাদের গুণাবলীর নামগুলি জানতে পারি (উদাহরণস্বরূপ "নীচের কোডের টুকরোতে" এলোকার) তাই আমি সেগুলি আবদ্ধ করতে পারি?
colorHandle = GLES20.glGetAttribLocation(program, "aColor");