ওপেনজিএল ইএস ২.০: 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.