430890

GLUT (OPENGL) ইন্সটল এবং কোড করে ছবি আঁকা :

আমরা যারা OpenGL ব্যাবহার করে C/C++ কিংবা Java দিয়ে বিভিন্ন ধরনের ছবি যেমন সরলরেখা, বৃত্ত, উপবৃত্ত, জানালা, বর্ণমালা, পতাকা ইত্যাদি আঁকার চেষ্টা করছি তাদের জন্য Windows OS এর চেয়ে Linux(Ubuntu)   তে কাজ করাটা অনেক বেশি সহজ হবে। কেননা Windows এ GLUT ইন্সটল করা অনেক ঝামেলার অন্যদিকে আপনি যদিUbuntu তে GLUT ইন্সটল করতে যান, তাহলে অনেক মজা পাবেন, যেমনটা আমি পেয়েছি কয়েকদিন Windows এ চেষ্টা করার পর। তাহলে এখনি দেখা যাক কিভাবে Ubuntu তে GLUT ইন্সটল করবেন।

  • প্রথমে টার্মিনালে যাবেন এবং নিচের কমান্ডসমূহ কপি/টাইপ করে ইন্টার দিবেন; আপনার কাজ শেষ। তারপর শুধু টার্মিনালের দিকে তাকিয়ে তাকবেন, দেখবেন কিছুক্ষন পর GLUT ইন্সটল হয়ে গেছে।

        sudo apt-get install freeglut3 freeglut3-dev

  • কিন্তু যদি আপনার অপারেটিং সিস্টেমটি নতুন ভার্সনের হয়ে থাকে (Ubuntu >= 11.10) তাহলে নিচের কমান্ডটিও একইভাবে টার্মিনালে দিন এবং আগের মতই তাকিয়ে তাকিয়ে দেখবেন GLUT ইন্সটল হয়ে গেছে।

         sudo apt-get install binutils-gold

এখন কিভাবে বুঝবেন আপনার পিসিতে GLUT ইন্সটল হয়েছে কিনা? চলেন একটা কোড রান করে দেখি কাজ করে কিনা? GLUT  (OpenGL) ব্যবহার করে আমরা একটি সরলরেখা আঁকার চেষ্টা করব ।

#include <stdio.h>
#include <math.h>
#include <GL/glut.h>


double X1=30, Y1=30, X2=200, Y2=200; // initialises the values, you can take inout or change these values


float round_value(float v)
{
  return (v + 0.5);
}
void LineDDA(void)
{
  double dx=(X2-X1);
  double dy=(Y2-Y1);
  double steps;
  float xInc,yInc,x=X1,y=Y1;
  /* Find out whether to increment x or y */
  steps=(abs(dx)>abs(dy))?(abs(dx)):(abs(dy));
  xInc=dx/(float)steps;
  yInc=dy/(float)steps;

  /* Clears buffers to preset values */
  glClear(GL_COLOR_BUFFER_BIT);

  /* Plot the points */
  glBegin(GL_POINTS);
  /* Plot the first point */
  glVertex2d(x,y);
  int k;
  /* For every step, find an intermediate vertex */
  for(k=0;k<steps;k++)
  {
    x+=xInc;
    y+=yInc;
    /* printf("%0.6lf %0.6lf\n",floor(x), floor(y)); */
    glVertex2d(round_value(x), round_value(y));
  }
  glEnd();

  glFlush();
}
void Init()
{
  
    glClearColor(1.0,1.0,1.0,0);
    glColor3f(0,128,0);  //green
  /* glViewport(0 , 0 , 640 , 480); */
  /* glMatrixMode(GL_PROJECTION); */
  /* glLoadIdentity(); */
  gluOrtho2D(0 , 640 , 0 , 480);
}
void main(int argc, char **argv)
{
 // x1=30,y1=30,x2=200,y2=200; 
  /* Initialise GLUT library */
  glutInit(&argc,argv);
  /* Set the initial display mode */
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  /* Set the initial window position and size */
  glutInitWindowPosition(0,0);
  glutInitWindowSize(640,480);
  /* Create the window with title "DDA_Line" */
  glutCreateWindow("DDA_Line");
  /* Initialize drawing colors */
  Init();
  /* Call the displaying function */
  glutDisplayFunc(LineDDA);
  /* Keep displaying untill the program is closed */
  glutMainLoop();
}

যে কোন Text Editor দিয়েই আপনি কোড করতে পারবেন। আচ্ছা কোড করা শেষ এবার রান করানোর পালা। চলেন আরেকবার টার্মিনালে যাই। টার্মিনালে গিয়ে নিচের কমান্ডের মত করে কামান্ড লিখি, মনে রাখতে হবে এইখানে কপি করা যাবে না, আপনি যে নাম দিয়ে কোডটাকে সেভ করেছেন এইখানে ওইনাম ব্যবহার করতে হবে। আর ধরে নিলাম Ubuntu তে কিভাবে কোড কম্পাইল এবং রান করতে হয় তা আপনি জানেন, যদি না জানেন ভয়ের কিছু নেই আপনার পাশেই রয়েছে সবজান্তা Google তার কাছ থেকে জেনে নিতে পারেন।

         gcc –o test line.c –lglut –lGL –lGLU

         ./test

আশা করছি আপনি একটা নতুন Window দেখতে পাবেন যেখানে একটি সরলরেখা আঁকা হয়ে গেছে। শেষ করছি, তবে কিছু কথা বলা দরকার যেন পরবর্তি টিউটোরিয়ালটা দেখতে ইচ্ছে হয়। খেয়াল করলে দেখবেন আমরা যে সরলরেখা এবং বৃত্ত এঁকেছি এইগুলা দেখতে ভাল হয় নাই মানে কিছু পিক্সেল মিসিং আছে কিংবা এদিক ওদিক সরে গেছে। এই সমস্যার সমাধান কি? এই নিয়েই কথা হবে পরের পোস্টে সেই সাথে একটা বৃত্ত ও আঁকার চেষ্টা করা হবে।

Happy Coading :)

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *