ওপেনজিএল ইএস ২.০: 2 ডি প্রজেকশন সেট আপ হচ্ছে


15

এই নিবন্ধটি সাধারণভাবে বর্ণনা করে, কীভাবে ধার্য ওপেনএল 2 ডি গ্রাফিক্স আঁকতে, স্থির ফাংশন পাইপলাইন ব্যবহার করে।

যেহেতু ওপেনজিএল ইএস ২.০ এর কিছু ইএস 1.x ফাংশন উপলব্ধ নেই (যেমন: glOrtho ()), তাদের কার্যকারিতা অবশ্যই ফ্রেগমেন্ট / ভার্টেক্স শেডারে প্রতিস্থাপন করতে হবে।

আমার প্রশ্ন হ'ল প্রোগ্রামেবল ফাংশন পাইপলাইনে নিম্নলিখিত 2D প্রক্ষেপণটি কীভাবে সেটআপ করবেন?

const XSize = 640, YSize = 480
glMatrixMode (GL_PROJECTION)
glLoadIdentity ();
glOrtho (0, XSize, YSize, 0, 0, 1)
glMatrixMode (GL_MODELVIEW)

উপরের উল্লিখিত স্থির ফাংশন 2 ডি অভিক্ষেপ সেটআপটিকে পুরোপুরি বিকল্পের জন্য ফ্রেগমেন্ট এবং ভার্টেক্স শেডারগুলি কীভাবে কনফিগার করা উচিত?

উত্তর:


12

আমার ওপেনগিএল ইএস ২ এক্স এক্স ইঞ্জিনে, আমি সিপিইউ সাইডে এমভিপি ম্যাট্রিক্স (মডেল ভিউ প্রোজেকশন) গণনা করি এবং এটি ভার্টেক্স শেডারে ইনজেক্ট করি।

অর্থ্থোনাল প্রজেকশনটি একটি 4 * 4 ম্যাট্রিক্স । আমার যখন এমভিপি থাকে, আমি এটিকে ভার্টেক্স শ্যাডারে এটি দিয়ে ইনজেকশন করি:

 mMvpLoc = getUniformLocation("uMvp");
 glUniformMatrix4fv(mMvpLoc, 1, false, mMvp.pointer());

এমএমভিপি হ'ল সিপিইউয়ের দিকের আমার ম্যাট্রিক্স 4 * 4। আপনি প্রোগ্রামের শেডার লোড করার পরে getUniformLocation শুধুমাত্র একবারে করা যেতে পারে।

ভার্টেক্স শ্যাডারের একটি উদাহরণ:

uniform mat4    uMvp;
attribute vec3 aPosition;
varying vec4 vColor;

void main() {
   vec4 position = vec4(aPosition.xyz, 1.);
   gl_Position = uMvp * position;
}

গ্লোপোজিশনটি একটি বিশেষ পূর্বনির্ধারিত পরিবর্তনশীল। এটি অবশ্যই শীর্ষবিন্দুর অবস্থান থাকতে পারে।

টুকরা শেডার একটি উদাহরণ। প্রতিটি বিন্দু আঁকার জন্য, চূড়ান্ত রঙ "gl_FragColor" গণনা করতে হবে:

#ifdef GL_ES
precision highp float;
#endif

void main(void)
{
   gl_FragColor = vColor;
}

এই প্রোগ্রামটি প্রতিটি শীর্ষবিন্দুর জন্য নির্ধারিত রঙের মসৃণকরণ সহ একটি ত্রিভুজ আঁকবে।

আরও ভাল টিউটোরিয়ালের জন্য, এই দুর্দান্ত দস্তাবেজটি দেখুন।


হ্যালো এলিস, এটি দুর্দান্ত এবং সম্পূর্ণ উত্তর। আপনাকে অনেক ধন্যবাদ. শুভেচ্ছা।
— বুঙ্কাই.সেটেরি

9

GlOrtho ডক থেকে, মান পরিবর্তিত সহ:

         2
    ------------       0              0             -1
       XSize
                       2
        0         ------------        0              1
                   - Ysize
        0              0              -2            -1
        0              0              0              1

এই ম্যাট্রিক্সটি একটি ইউনিফর্মে রাখুন এবং তারপরে আপনি এটি আপনার আগত ভার্টেক্স অবস্থানগুলিতে প্রয়োগ করতে পারেন (অর্থাত্ এম। পণ্য ব্যবহার করুন)।


প্রিয় বাহবর, উত্তরের জন্য আপনাকে ধন্যবাদ। সুতরাং মূলত, ES2.0 এ আর কিছুই আলাদা নেই, কেবল ম্যানুয়ালি glOrtho () ম্যাট্রিক্স প্রতিস্থাপন তৈরি করে।
— বুনকাই.সেটেরি

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