Friday, January 13, 2017

Cara Install Codeblocks + Gcc + OpenGL + Freeglut di linux ubuntu


Hai pecandu linux, kali ini saya akan share cara menginstall codeblocks dan ekstensi library open gl & freeglut. Codeblocks adalah suatu aplikasi compiler program berbasis bahasa c dan c++, tentu apabila kita menggunakan linux wajib menginstall gcc terlebih dahulu.  Opengl adalah suatu librari untuk membuat gambar 2d dengan bahasa c/c++, sedangkan Freeglut adalah suatu librari untuk membuat gambar 3d dengan bahasa c/c++. So, tanpa bertele tele mari kira mencoba menginstallnya, O iya, tutorial ini tested pada chromium ubuntu saya. Than, here we go


Langkah pertama : Cek dan install gcc pada linux anda

Biasanya sih, ketika anda install linux maka tidak terdapat aplikasi gcc, namun cek dulu saja, buka terminal dan masukan
gcc --version
Program anda akan berjalan lancar apabila telah terinstall gcc versi 4.7.1 keatas. Namun apabila belum ada, mari kita install, masukan command berikut di terminal
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install g++ -y

Langkah kedua : Installing codeblocks

buka terminal, dan masukan PPA codeblocks
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
update dan install codeblocks
sudo apt-get update && sudo apt-get install codeblocks -y
sebetulnya ada cara lebih mudah, anda buka ubuntu software center atau synaptic package manager, search codeblocks, tandai dan install

Langkah ketiga : configurasi codeblocks dan gcc

  • Buka codeblocks anda melalui launcher
  • Select setting -> compiler
  • Select compiler flag dan check flag pada Enable All Compiler Warnings dan Have g++ Follow the C++11 ISO C++ Language Standard
  •  Select toolchain executables tab dan arahkan compiler's instalation directory ke tempat anda menginstall g++, biasanya default install di /usr dan lengkapi seperti pada gambar
  • Done, coba buat codingan c pada codeblocks, dan compile.
  • apabila masih error maka anda harus menginstall
  • sudo apt-get install build-essential

 

Langkah keempat : Installing library opengl dan freeglut

  • Install library opengl, buka terminal dan masukan
    sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
  • Install library freeglut, buka terminal dan masukan
    sudo apt-get install freeglut3 freeglut3-dev

Langkah kelima : Configurasi codeblocks dengan library openGL dan freeglut

  • buka codeblocks
  • select setting ->compiler
  • select linker settings
  • add link libraries : GL, GLEW, SDL2, GLU, glut. jangan typo ya, huruf besar kecil mempengaruhi.
  • Done, codeblocks anda telah terkonfigurasi dengan openGL dan freeglut.

Langkah keenam : mari kita coba membuat program gambar 2d dan 3d.

contoh program menggambar segitiga gasket 2d

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdlib.h>

void myinit()
{
glClearColor(1.0, 1.0, 1.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 50.0, 0.0, 50.0);
glMatrixMode(GL_MODELVIEW);
}

void display()
{
GLfloat vertices[3][2]={{0.0,0.0},{25.0,50.0},{50.0,0.0}};
int j, k;
int rand();
GLfloat p[2]={7.5, 5.0};
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(k=0;k<50000 br="" k=""> {
j=rand()%3;
p[0]=(p[0]+vertices[j][0])/2.0;
p[1]=(p[1]+vertices[j][1])/2.0;
glVertex2fv(p);
}
glEnd();
glFlush();
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Sierpinski Gasket 2D");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}


compile dan apakah muncul gambar seperti dibawah ini?


Contoh program menggambar sistem galaxi 3d dan bisa digerakan dengan menekan tombol space

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

const float deg2rad=3.1415/180;

void draw(void);
void drawcircle (float radius);
void myKeyboard(unsigned char key, int x, int y);

float marsx=0, marsy=0.85;
int sudutmars=90;

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(640,480);
glutInitWindowPosition(100, 100);
glutCreateWindow("System Galaxy");
glutDisplayFunc(draw);
glEnable(GL_LIGHTING); // enable the light source
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST); // for hidden surface removal
glEnable(GL_NORMALIZE); // normalize vectors for proper shading
glClearColor(1.0f, 1.0f, 1.0f,0.0f); // background is light gray
glViewport(0, 0, 640, 480);
glutKeyboardFunc(myKeyboard);
glutMainLoop();
return 0;
}

void draw(void)
{
// set the light source properties
GLfloat lightIntensity[]={0.7f, 0.7f, 0.7f, 1.0f};
GLfloat light_position[]={2.0f, 6.0f, 3.0f, 0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightIntensity);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
// set the camera
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winHt=1.0; // half-height of the window
//glOrtho(-winHt*64/48.0, winHt*64/48.0, -winHt, winHt, 0.1, 100.0);
glOrtho(-1.0, 1.0, -1.0, 1.0, 0.1, 100.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3, 1.3, 2, 0, 0.25, 0, 0.0, 1.0, 0.0);
// start drawing
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear the screen
// set properties of the surface material of sun
GLfloat mat_ambient[]={1.0f, 0.0f, 0.0f, 1.0f}; // gray
GLfloat mat_diffuse[]={1.0f, 0.0f, 0.0f, 1.0f};
GLfloat mat_specular[]={0.9f, 0.0f, 0.0f, 1.0f};
GLfloat mat_shininess[]={1000.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
//menggambar matahari
glutSolidSphere(0.125, 20, 20); //(radius, slices, stack)
//menggambar lintasan merkurius
drawcircle (0.85);

GLfloat mer_ambient[]={0.0f, 1.0f, 0.0f, 1.0f}; // gray
GLfloat mer_diffuse[]={0.0f, 1.0f, 0.0f, 1.0f};
GLfloat mer_specular[]={0.0f, 1.0f, 0.0f, 1.0f};
GLfloat mer_shininess[]={100.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, mer_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mer_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mer_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mer_shininess);

glPushMatrix();
glTranslated(marsx, marsy, 0);
//menggambar mars
glutSolidSphere(0.07, 15, 15);
//menggambar lintasan mars
drawcircle (0.18);

GLfloat sat_ambient[]={0.0f, 0.0f, 1.0f, 1.0f}; // gray
GLfloat sat_diffuse[]={0.0f, 0.0f, 1.0f, 1.0f};
GLfloat sat_specular[]={0.0f, 0.0f, 1.0f, 1.0f};
GLfloat sat_shininess[]={100.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, sat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, sat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, sat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, sat_shininess);

glTranslated(0, 0.18, 0);
//menggambar satelit mars
glutSolidSphere(0.03, 15, 15);
glPopMatrix();

glFlush();
}

void drawcircle (float radius)
{
glColor3f (0.0,0.0,1.0);
glBegin(GL_LINE_LOOP);
int i;
for (i==0; i<360 br="" i=""> {
float degInRad=i* deg2rad;
glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius ) ;
}
glEnd();
}

void myKeyboard(unsigned char key, int x, int y)
{
if (key==32)
{
sudutmars=sudutmars+5;
float degInRad=sudutmars* deg2rad;
marsx=cos(degInRad)*0.85;
marsy=sin(degInRad)*0.85;
}
glutPostRedisplay ();
}
apakah muncul gambar seperti dibawah ini?

Well, selamat codeblocks anda sudah terinstall secara sempurna begitupun dengan library gcc, openGL dan freeglut. Happy Coding!

sumber :
install codeblock : www.dummies.com
library openGL : en.wikibooks.org
library freeglut : kiwwito.com
code 2d dan 3d : Mata Kuliah Grafika Komputer oleh ibu Wijayanti.

1 comment: