OpenGL একটি শক্তিশালী 3D প্রোগ্রামিং টুল যা সাধারণ আদিম থেকে জটিল ত্রিমাত্রিক দৃশ্য আঁকতে ব্যবহৃত হয়। এই নিবন্ধটি আপনাকে শিখাবে কিভাবে একটি সাধারণ ঘনক আঁকতে হয় যা আপনি তিনটি মাত্রায় দেখতে স্পিন করতে পারেন!
এই প্রকল্পের জন্য আপনার প্রয়োজন হবে একটি কোড এডিটর এবং সি প্রোগ্রামিং এর কিছু জ্ঞান।
ধাপ
3 এর অংশ 1: প্রাথমিক সেটআপ
পদক্ষেপ 1. ওপেনজিএল ইনস্টল করুন আপনার সিস্টেমে ওপেনজিএল ইনস্টল করার জন্য এই ধাপগুলি অনুসরণ করুন।
আপনার যদি ইতিমধ্যে ওপেনজিএল, সেইসাথে একটি সামঞ্জস্যপূর্ণ সি কম্পাইলার ইনস্টল করা থাকে, তাহলে আপনি এই ধাপটি এড়িয়ে পরবর্তীটিতে যেতে পারেন।
পদক্ষেপ 2. নথি তৈরি করুন।
আপনার পছন্দের কোড এডিটরে একটি নতুন ফাইল তৈরি করুন এবং mycube.c হিসেবে সেভ করুন
ধাপ 3. #অন্তর্ভুক্ত করুন।
এগুলি হল আপনার প্রোগ্রামের জন্য প্রয়োজনীয় মৌলিক অন্তর্ভুক্ত। এটি উপলব্ধি করা গুরুত্বপূর্ণ যে বিভিন্ন অপারেটিং সিস্টেমের জন্য প্রকৃতপক্ষে বিভিন্ন অন্তর্ভুক্ত রয়েছে। আপনার প্রোগ্রামটি বহুমুখী এবং যেকোন ব্যবহারকারীর জন্য চালানো যেতে পারে তা নিশ্চিত করতে এই সবগুলি অন্তর্ভুক্ত করতে ভুলবেন না।
// অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #include #else #include #endif
ধাপ 4. ফাংশন প্রোটোটাইপ এবং গ্লোবাল ভেরিয়েবল যোগ করুন।
আপনার পরবর্তী পদক্ষেপ হল কিছু ফাংশন প্রোটোটাইপ ঘোষণা করা।
// ফাংশন প্রোটোটাইপ অকার্যকর প্রদর্শন (); অকার্যকর বিশেষ কী (); // গ্লোবাল ভেরিয়েবল ডবল rotate_y = 0; ডবল rotate_x = 0;
ধাপ 5. প্রধান () ফাংশন সেট আপ করুন।
int main (int argc, char* argv ) {// GLUT আরম্ভ করুন এবং ব্যবহারকারীর পরামিতিগুলি glutInit (& argc, argv); // Z- বাফার glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) সহ ডবল বাফার্ড ট্রু কালার উইন্ডো অনুরোধ করুন;
ধাপ 6. উইন্ডো তৈরি করুন।
পরবর্তী ধাপ হল জানালা তৈরি করুন যার মধ্যে আপনি কিউব আঁকবেন। এই টিউটোরিয়ালে, উইন্ডোটিকে "অসাধারণ ঘন" বলা হয়েছে।
// উইন্ডো glutCreateWindow ("Awesome Cube") তৈরি করুন;
ধাপ 7. গভীরতা পরীক্ষা সক্ষম করুন।
ওপেনজিএল একটি কঠোর ভাষা যাতে এটি অনুমান করে না যে কোনও বিশেষ বৈশিষ্ট্য সক্ষম। আপনার প্রোগ্রামটি যথাক্রমে 3-মাত্রায় প্রদর্শিত Z- বাফার ব্যবহার করে যা আপনি আগে দেখেছিলেন, আপনার প্রয়োজন গভীরতা-পরীক্ষা সক্ষম করুন । আপনি যখন ওপেনজিএল অন্বেষণ করতে থাকবেন, আপনি অনেক বৈশিষ্ট্য আবিষ্কার করবেন যা আপনাকে আলো, টেক্সচার, কুল-ফেসিং এবং আরও অনেক কিছু সহ সক্ষম করতে হবে।
// Z- বাফার গভীরতা পরীক্ষা glEnable সক্ষম করুন (GL_DEPTH_TEST);
ধাপ 8. কলব্যাক ফাংশন যোগ করুন।
এখানে কলব্যাক ফাংশনগুলি আপনি আগে প্রোটোটাইপ লিখেছিলেন। প্রতিবার মূল লুপের মাধ্যমে, এই ফাংশনগুলি বলা হবে। ডিসপ্লে ফাংশন ভেরিয়েবলের যে কোন পরিবর্তনের উপর ভিত্তি করে দৃশ্যটি পুনরায় অঙ্কন করে যা আগের কল থেকে করা হয়েছিল। স্পেশাল কী ফাংশন আমাদের প্রোগ্রামের সাথে ইন্টারঅ্যাক্ট করতে দেয়।
// কলব্যাক ফাংশন glutDisplayFunc (ডিসপ্লে); glutSpecialFunc (specialKeys);
ধাপ 9. MainLoop শুরু করুন।
এটি মূল ফাংশনটি স্মরণ করবে যতক্ষণ না আপনি অ্যানিমেশন এবং ব্যবহারকারীর মিথস্ক্রিয়ার অনুমতি দেওয়ার জন্য প্রোগ্রামটি বন্ধ করেন।
// ইভেন্ট glutMainLoop () এর জন্য GLUT- এ পাস নিয়ন্ত্রণ; // OS রিটার্ন 0 এ ফিরে যান; }
3 এর অংশ 2: প্রদর্শন () ফাংশন
ধাপ 1. এই ফাংশনের উদ্দেশ্য বুঝুন।
আপনার কিউব আঁকার সমস্ত কাজ এই ফাংশনে সম্পন্ন হবে। আপনার ঘনক্ষেত্রের পিছনে সাধারণ ধারণা হল ছয়টি দিক পৃথকভাবে আঁকুন এবং তাদের যথাযথ অবস্থানে রাখুন।
ধারণাগতভাবে, চারটি কোণ সংজ্ঞায়িত করে এবং ওপেনজিএলকে লাইনগুলিকে সংযুক্ত করে এবং আপনি যে রঙটি সংজ্ঞায়িত করেন তা দিয়ে প্রতিটি দিক আঁকা হবে। এটি করার ধাপ নিচে দেওয়া হল।
পদক্ষেপ 2. glClear () যোগ করুন।
এই ফাংশনে আপনাকে প্রথম পদক্ষেপ নিতে হবে রঙ এবং Z বাফার পরিষ্কার করুন । এই পদক্ষেপগুলি ছাড়া, নতুন অঙ্কনগুলির অধীনে পুরানো অঙ্কনগুলি এখনও দৃশ্যমান হতে পারে এবং আঁকা বস্তুগুলি পর্দায় সঠিক অবস্থানে থাকবে না।
void display () {// Clear screen and Z-buffer glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ধাপ 3. glBegin () এবং glEnd () যোগ করুন।
OpenGL বস্তুকে বিভিন্ন বহুভুজের সংমিশ্রণ হিসেবে সংজ্ঞায়িত করে। ব্যবহার করে গ্লবেগিন () কমান্ড, আপনি কার্যকরভাবে একটি পেন্সিল রাখুন যা একটি আকৃতি আঁকবে। পেন্সিল তুলতে এবং একটি নতুন আকৃতি শুরু করতে, আপনাকে অবশ্যই ব্যবহার করতে হবে গ্লেন্ড () কমান্ড এই টিউটোরিয়ালে আপনি GL_POLYGON ব্যবহার করে কিউবের প্রতিটি পাশ আঁকবেন কিন্তু অন্যান্য আকার তৈরি করতে GL_LINE, GL_QUAD, বা GL_TRIANGLE এর মত অন্যান্য প্যারামিটার অপশন ব্যবহার করা সম্ভব।
- এখানে আপনি আপনার ঘনক্ষেত্রের সামনে দিয়ে শুরু করবেন। পরে আপনি সব 6 পাশের রং যোগ করবে।
// বহু রঙের দিক - সামনে glBegin (GL_POLYGON); // পরবর্তী ধাপে verteices যোগ করা হবে glEnd ();
ধাপ 4. glVertex3f () যোগ করুন।
একবার আপনি বলে দিলেন যে আপনি আপনার বহুভুজ শুরু করতে চান, আপনাকে করতে হবে শীর্ষবিন্দু সংজ্ঞায়িত করুন বস্তুর glVertex এর একাধিক ফর্ম রয়েছে যা আপনি আপনার বস্তুর সাথে কী করতে চান তার উপর নির্ভর করে।
- প্রথমটি হল আপনি কতগুলি মাত্রায় কাজ করছেন। glVertex3f এর উপরের 3 টি বলছে আপনি 3 টি মাত্রায় অঙ্কন করছেন। 2 বা 4 মাত্রায় কাজ করাও সম্ভব। GlVertex3f এ উপরের f বলছে আপনি ভাসমান পয়েন্ট সংখ্যার সাথে কাজ করছেন। আপনি হাফপ্যান্ট, পূর্ণসংখ্যা বা দ্বিগুণ ব্যবহার করতে পারেন।
- লক্ষ্য করুন যে এই পয়েন্টগুলি একটিতে সংজ্ঞায়িত করা হয়েছে ঘড়ির কাঁটার বিপরীতে পদ্ধতি এই মুহুর্তে এটি খুব গুরুত্বপূর্ণ নয় কিন্তু যখন আপনি আলো, টেক্সচার এবং কুল-মুখোমুখি হয়ে কাজ শুরু করবেন, এটি অবিশ্বাস্যভাবে গুরুত্বপূর্ণ হয়ে উঠবে তাই আপনার পয়েন্টগুলিকে ঘড়ির কাঁটার বিপরীতে নির্ধারণ করার অভ্যাস করুন।
- GlBegin () এবং glEnd () লাইনের মধ্যে শিরোনাম যোগ করুন।
// বহু রঙের দিক - সামনে glBegin (GL_POLYGON); glVertex3f (-0.5, -0.5, -0.5); // P1 glVertex3f (-0.5, 0.5, -0.5); // P2 glVertex3f (0.5, 0.5, -0.5); // P3 glVertex3f (0.5, -0.5, -0.5); // P4 glEnd ();
পদক্ষেপ 5. glColor3f () যোগ করুন।
glColor glVertex এর অনুরূপ পদ্ধতিতে কাজ করে। আপনি শর্টস, ইন্টিজার, ডাবলস বা ফ্লোটস হিসেবে পয়েন্ট সংজ্ঞায়িত করতে পারেন। প্রতিটি রঙের মান 0 থেকে 1 পর্যন্ত। GlColor3f () -এ 3 আলফা চ্যানেল ছাড়া আরজিবি কালার সিস্টেম বোঝায়। একটি রঙের আলফা তার স্বচ্ছতা নির্ধারণ করে। আলফা স্তর পরিবর্তন করতে, glColor4f () ব্যবহার করুন শেষ প্যারামিটারের মান 0 থেকে 1 পর্যন্ত অস্বচ্ছ থেকে স্বচ্ছ হওয়ার জন্য।
- যখন আপনি glColor3f () কল করেন তখন সেই বিন্দু থেকে টানা প্রতিটি শীর্ষবিন্দু সেই রঙের হবে। অতএব, যদি আপনি চান যে চারটি শীর্ষবিন্দু লাল হতে পারে, তবে glVertex3f () কমান্ডের আগে যেকোনো সময় একবার রঙ সেট করুন এবং সমস্ত শীর্ষবিন্দু লাল হবে।
- নীচের সংজ্ঞায়িত সামনের দিক দেখায় কিভাবে প্রতিটি শীর্ষবিন্দুর জন্য একটি নতুন রঙ নির্ধারণ করা যায়। যখন আপনি এটি করেন, আপনি OpenGL রঙের একটি আকর্ষণীয় সম্পত্তি দেখতে পারেন। যেহেতু বহুভুজের প্রতিটি শীর্ষবিন্দুর নিজস্ব রং আছে, তাই OpenGL স্বয়ংক্রিয়ভাবে রং মিশ্রিত করবে! পরবর্তী ধাপে দেখানো হবে কিভাবে একই রঙের সাথে চারটি শীর্ষবিন্দু বরাদ্দ করা যায়।
// বহু রঙের দিক - সামনে glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 হল লাল glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 হল সবুজ glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 হল নীল glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 হল বেগুনি গ্লেন্ড ();
ধাপ 6. অন্য দিকগুলি পরিচালনা করুন।
কিউবের অন্য পাঁচটি দিকের জন্য প্রতিটি শীর্ষবিন্দুর অবস্থান কী হবে তা খুঁজে বের করুন কিন্তু সরলতার জন্য, এগুলি আপনার জন্য গণনা করা হয়েছে এবং এতে অন্তর্ভুক্ত করা হয়েছে চূড়ান্ত প্রদর্শন () ফাংশন নিচে.
// সাদা দিক - পিছনে glBegin (GL_POLYGON); glColor3f (1.0, 1.0, 1.0); glVertex3f (0.5, -0.5, 0.5); glVertex3f (0.5, 0.5, 0.5); glVertex3f (-0.5, 0.5, 0.5); glVertex3f (-0.5, -0.5, 0.5); glEnd (); // বেগুনি দিক - ডান glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 1.0); glVertex3f (0.5, -0.5, -0.5); glVertex3f (0.5, 0.5, -0.5); glVertex3f (0.5, 0.5, 0.5); glVertex3f (0.5, -0.5, 0.5); glEnd (); // সবুজ দিক - বাম glBegin (GL_POLYGON); glColor3f (0.0, 1.0, 0.0); glVertex3f (-0.5, -0.5, 0.5); glVertex3f (-0.5, 0.5, 0.5); glVertex3f (-0.5, 0.5, -0.5); glVertex3f (-0.5, -0.5, -0.5); glEnd (); // নীল দিক - TOP glBegin (GL_POLYGON); glColor3f (0.0, 0.0, 1.0); glVertex3f (0.5, 0.5, 0.5); glVertex3f (0.5, 0.5, -0.5); glVertex3f (-0.5, 0.5, -0.5); glVertex3f (-0.5, 0.5, 0.5); glEnd (); // লাল দিক - নীচে glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); glVertex3f (0.5, -0.5, 0.5); glVertex3f (-0.5, -0.5, 0.5); glVertex3f (-0.5, -0.5, -0.5); glEnd (); glFlush (); glutSwapBuffers (); }
আমরা এই ফাংশনের জন্য কোডের শেষ দুটি লাইন যোগ করতে চাই। এইগুলো glFlush ();
এবং glutSwapBuffers ();
যা আমাদের ডাবল-বাফারিং প্রভাব দেয় যা আপনি আগে শিখেছিলেন।
3 এর অংশ 3: ব্যবহারকারীর ইন্টারেক্টিভিটি
ধাপ 1. specialKeys () যোগ করুন।
আপনি প্রায় সম্পন্ন করেছেন কিন্তু এই মুহুর্তে, আপনি একটি ঘনক আঁকতে পারেন কিন্তু এটি ঘোরানোর কোন উপায় নেই। এটি করার জন্য, আপনি করবেন একটি বিশেষ কী তৈরি করুন () ফাংশনটি আমাদের তীর কী টিপতে এবং কিউব ঘোরানোর অনুমতি দেয়!
- এই ফাংশনটি কেন আপনি বিশ্বব্যাপী ভেরিয়েবলগুলি rotate_x এবং rotate_y ঘোষণা করেছেন। যখন আপনি ডান এবং বাম তীর কী টিপবেন, rotate_y 5 ডিগ্রী বৃদ্ধি বা হ্রাস পাবে। একইভাবে, যখন আপনি উপরের এবং নীচের তীর কীগুলি টিপবেন, তখন rotate_x সেই অনুযায়ী পরিবর্তন হবে।
void specialKeys (int key, int x, int y) {// ডান তীর - ঘূর্ণন 5 ডিগ্রী বাড়ান যদি (কী == GLUT_KEY_RIGHT) rotate_y += 5; // বাম তীর - 5 ডিগ্রী দ্বারা ঘূর্ণন হ্রাস করুন যদি (কী == GLUT_KEY_LEFT) rotate_y - = 5; অন্যথায় যদি (কী == GLUT_KEY_UP) rotate_x += 5; অন্যথায় যদি (কী == GLUT_KEY_DOWN) rotate_x -= 5; // অনুরোধ প্রদর্শন আপডেট glutPostRedisplay (); }
পদক্ষেপ 2. glRotate () যোগ করুন।
আপনার শেষ বিবৃতিটি হল সেই বিবৃতি যোগ করা যা আপনার বস্তুকে ঘোরাবে। ডিসপ্লে () ফাংশনে ফিরে যান এবং সামনে দিকের আগে, এই লাইনগুলি যুক্ত করুন:
// রিসেট রূপান্তর glLoadIdentity (); // ঘোরান যখন ব্যবহারকারী পরিবর্তন করে rotate_x এবং rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0); glRotatef (rotate_y, 0.0, 1.0, 0.0); // বহু রঙের দিক - সামনে…।
ধাপ the. x- অক্ষ বরাবর ঘনক্ষেত্রকে 2 দ্বারা, y- অক্ষ বরাবর 2 দ্বারা ঘনকে স্কেল করার জন্য নিম্নোক্ত কমান্ড যোগ করুন, y- অক্ষের সমান 180 ডিগ্রী দ্বারা ঘনকে ঘোরান, এবং x- অক্ষ বরাবর ঘনকে 0.1 দ্বারা অনুবাদ করুন।
উপরে বর্ণিত হিসাবে সঠিক ক্রমে এইগুলি এবং আগের glRotate () কমান্ডগুলি সাজানোর বিষয়টি নিশ্চিত করুন। (যদি আপনি অনিশ্চিত হন তবে টিউটোরিয়ালের শেষে চূড়ান্ত কোডে এটি করা হয়েছে।)
// অন্যান্য রূপান্তর glTranslatef (0.1, 0.0, 0.0); glRotatef (180, 0.0, 1.0, 0.0); glScalef (2.0, 2.0, 0.0);
ধাপ 4. আপনার কোড কম্পাইল করুন এবং চালান।
ধরুন আপনি আপনার কম্পাইলার হিসাবে gcc ব্যবহার করছেন, আপনার প্রোগ্রামটি কম্পাইল এবং পরীক্ষা করতে আপনার টার্মিনাল থেকে এই কমান্ডগুলি চালান।
লিনাক্সে: gcc cube.c -o cube -lglut -lGL./ mycube on Mac: gcc -o foo foo.c -framework GLUT -framework OpenGL। lglu32 -lopengl32./ মাইকিউব
ধাপ 5. আপনার সম্পূর্ণ কোড চেক করুন।
এটি এইরকম হওয়া উচিত:
// // ফাইল: mycube.c // লেখক: ম্যাট ডেইজলি // তৈরি: 4/25/2012 // প্রকল্প: ওপেনজিএলে একটি ঘনক্ষেত্র তৈরির সোর্স কোড // বর্ণনা: একটি ওপেনজিএল উইন্ডো তৈরি করে এবং একটি 3D কিউব আঁকে/ / যে ব্যবহারকারী তীরচিহ্নগুলি ব্যবহার করে ঘুরাতে পারে // // নিয়ন্ত্রণ: বাম তীর -ঘোরানো বাম // ডান তীর -ডানদিকে ঘোরান // উপরে তীর -ঘোরান উপরে // নিচে তীর -নিচে ঘোরান // ------ -------------------------------------------------- -// অন্তর্ভুক্ত // ------------------------------------------- --------------- #অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #সংজ্ঞায়িত করুন --------------------------------------------- // ফাংশন প্রোটোটাইপ / / ------------------------------------------------- --------- অকার্যকর প্রদর্শন (); অকার্যকর বিশেষ কী (); // ------------------------------------------------ ---------- // গ্লোবাল ভেরিয়েবল // ---------------------------------- ------------------------ ডবল rotate_y = 0; ডবল rotate_x = 0; // ------------------------------------------------ ---------- // প্রদর্শন () কলব্যাক ফাংশন // ------------------------------- --------------------------- অকার্যকর প্রদর্শন () {// পরিষ্কার পর্দা এবং Z- বাফার glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // রিসেট রূপান্তর glLoadIdentity (); // অন্যান্য রূপান্তর // glTranslatef (0.1, 0.0, 0.0); // অন্তর্ভুক্ত নয় // glRotatef (180, 0.0, 1.0, 0.0); // অন্তর্ভুক্ত নয় // ব্যবহারকারী যখন rotate_x এবং rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0) পরিবর্তন করে তখন ঘোরান; glRotatef (rotate_y, 0.0, 1.0, 0.0); // অন্যান্য রূপান্তর // glScalef (2.0, 2.0, 0.0); // অন্তর্ভুক্ত নয় // বহু রঙের দিক - সামনে glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 হল লাল glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 হল সবুজ glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 হল নীল glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 হল বেগুনি গ্লেন্ড (); // সাদা দিক - পিছনে glBegin (GL_POLYGON); glColor3f (1.0, 1.0, 1.0); glVertex3f (0.5, -0.5, 0.5); glVertex3f (0.5, 0.5, 0.5); glVertex3f (-0.5, 0.5, 0.5); glVertex3f (-0.5, -0.5, 0.5); glEnd (); // বেগুনি দিক - ডান glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 1.0); glVertex3f (0.5, -0.5, -0.5); glVertex3f (0.5, 0.5, -0.5); glVertex3f (0.5, 0.5, 0.5); glVertex3f (0.5, -0.5, 0.5); glEnd (); // সবুজ দিক - বাম glBegin (GL_POLYGON); glColor3f (0.0, 1.0, 0.0); glVertex3f (-0.5, -0.5, 0.5); glVertex3f (-0.5, 0.5, 0.5); glVertex3f (-0.5, 0.5, -0.5); glVertex3f (-0.5, -0.5, -0.5); glEnd (); // নীল দিক - TOP glBegin (GL_POLYGON); glColor3f (0.0, 0.0, 1.0); glVertex3f (0.5, 0.5, 0.5); glVertex3f (0.5, 0.5, -0.5); glVertex3f (-0.5, 0.5, -0.5); glVertex3f (-0.5, 0.5, 0.5); glEnd (); // লাল দিক - নীচে glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); glVertex3f (0.5, -0.5, 0.5); glVertex3f (-0.5, -0.5, 0.5); glVertex3f (-0.5, -0.5, -0.5); glEnd (); glFlush (); glutSwapBuffers (); } // ----------------------------------------------- ----------- // specialKeys () কলব্যাক ফাংশন // ------------------------------ ---------------------------- অকার্যকর বিশেষ কী (int কী, int x, int y) {// ডান তীর-5 দ্বারা ঘূর্ণন বাড়ান ডিগ্রী যদি (কী == GLUT_KEY_RIGHT) rotate_y += 5; // বাম তীর - 5 ডিগ্রী দ্বারা ঘূর্ণন হ্রাস করুন যদি (কী == GLUT_KEY_LEFT) rotate_y - = 5; অন্যথায় যদি (কী == GLUT_KEY_UP) rotate_x += 5; অন্যথায় যদি (কী == GLUT_KEY_DOWN) rotate_x -= 5; // অনুরোধ প্রদর্শন আপডেট glutPostRedisplay (); } // ----------------------------------------------- ----------- // প্রধান ফাংশন // ------------------------------- --------------------------- int প্রধান (int argc, char* argv ) {// GLUT আরম্ভ করুন এবং ব্যবহারকারীর পরামিতিগুলি glutInit & argc, argv); // Z- বাফার glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) সহ ডবল বাফার্ড ট্রু কালার উইন্ডো অনুরোধ করুন; // উইন্ডো glutCreateWindow ("Awesome Cube") তৈরি করুন; // Z- বাফার গভীরতা পরীক্ষা glEnable সক্ষম করুন (GL_DEPTH_TEST); // কলব্যাক ফাংশন glutDisplayFunc (ডিসপ্লে); glutSpecialFunc (specialKeys); // ইভেন্ট glutMainLoop () এর জন্য GLUT- এ পাস নিয়ন্ত্রণ; // OS রিটার্ন 0 এ ফিরে যান; }