OPEN GL PROGRAM MELALUI CODEBLOCKS SOFTWARE


#include <GL/glut.h>
#include <conio.h>
#include <iostream>

using namespace std;
//clear screen
void cls()
{
    cout << string(25, '\n');
}
//variabel yang digunakan untuk menyimpan kordinat awal dan akhir
int tx0,ty0,tx1,ty1;
//k adalah kondisi untuk input. Sesuai atau tidak dengan yang di minta.
int k;
//Initialize OpenGL
void init(void)
{
    glClearColor(0.0,0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    //gluOrtho2D ini menentukan lokasi titik 0,0
    //nilai yang di atas itu berarti titik 0,0 nya ditengah
    //ada jarak 50 pixel di sebelah kiri titik 0,0 sebelum
    //mencapai pojok kiri layar. Begitu juga di kanan
    //atas dan bawah
    gluOrtho2D(-50.0,50.0,-50.0,50.0);
}
//drawing the line
void display(void)
{
    glClear (GL_COLOR_BUFFER_BIT);
    //line di bawah itu menentukan warna garis
    glColor3f(255.0,255.0,255.0);
    glLineWidth(7.0f);
    //mulai menggambar line
    glBegin(GL_LINES);
    //glVertex2d itu untuk menentukan kordinat titiknya.
    //2d berarti 2 dimensi dan angka yang dimasukkin bertipe double
    //3f berarti 3 dimensi dan bertipe float
        glVertex2d(tx0, ty0); //titik awal
        glVertex2d(tx1, ty1); //titik akhir
    //akhir penggambaran
    glEnd ();
    glFlush();
}

/*
//Untuk keluar dari window opengl
void keyboard(unsigned char key, int x, int y)
{
            switch (key) {
                        case 27:
                                    close(0); //Exit the application if 'Esc' key is pressed
            }
}*/
//Are we done yet?
//Obviously, no.
//inputpart --> fungsi input kordinat.
int inputpart2();
void inputpart();
//3 if dibawah menentukan apakah kordinat yang dimasukkan sesuai
//dengan yang diminta.
void horizonif();
void vertikaif();
void diagonaif();
//Finally, the lovely Main
int main(int argc, char**argv)
{
    k = 0;
    while(k!=1)
    {
        if (k==2)
        {
            cls();
        }
        int pil;
        cout << "This the part when I make you some line\n\n";
        cout << "1. Horizontal line\n";
        cout << "2. Vertikal line\n";
        cout << "3. Diagonal line\n";
        cout << "4. Exit\n";
        cout << "Which one do you want [1..4] : "; cin >> pil;
        cout << endl;
        switch (pil)
        {
            case 1:
                cout << "Horizontal Line?\n\n";
                inputpart();
                horizonif();
                break;
            case 2:
                cout << "Vertical Line?\n\n";
                inputpart();
                vertikaif();
                break;
            case 3:
                cout << "Diagonal Line?\n\n";
                inputpart();
                diagonaif();
                break;
            case 4:
                cout << "BYE!!! or bae. Whatever that means";
                return 0;
            default:
                cout << "What's that? Can't hear you, mate.\n\n";
                getch();
        }
    }
    glutInit(&argc, argv);
    glutInitWindowPosition(100, 100); //posisi window opengl di desktop
    glutInitWindowSize(500, 500); //size window opengl di desktop
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutCreateWindow("GARIS"); //membuat window sekaligus judulnya
    init();
    //glutKeyboardFunc(keyboard); //biar kalau tekan esc bisa keluar dari window opengl
    glutDisplayFunc(display); //menampilkan hasil garis
    glutMainLoop(); //something something rendering
}
void inputpart()
{
    cout << "What's the starting coordinate ?[max is 50/-50]\n";
        //memasukkan titik awal
        cout << "X = "; tx0 = inputpart2();
        cout << "Y = "; ty0 = inputpart2();
        cout << "OK, now what's the end coordinate ?\n";
        //memasukkan titik akhir
        cout << "X = "; tx1 = inputpart2();
        cout << "Y = "; ty1 = inputpart2();
        //ini tempat menentukan horizontal apa enggak garisnya
}
int inputpart2()
{
    int xy;
    do {
        cin >> xy;
    } while(xy > 50 || xy < -50);
    return xy;
}
void horizonif()
{
    if (ty0==ty1)
    {
        cout << "Wundebar!, it's.. an Hline. Reminds me of a particularly messy Battlefield" << endl;
        cout << "Don't forget to press Esc to exit OpenGL window!" << endl;
        k=1;
    }
    else
    {
        cout << "It's not a horizontal line\n" << "Give me a horizontal one.\n\n";
        k=2;
    }
    getch();
}

void vertikaif()
{
    if (tx0==tx1)
    {
        cout << "Wundebar!, it's.. a vline\n" << "Haha.. Geddit? I spell it with a V..\n" << "Nevermind." << endl;
        cout << "You can click the X in the upper right corner of the window with your mouse." << endl;
        cout << "But why do that if you can press Esc!" << endl;
        k=1;
    }
    else
    {
        cout << "It's not a vertical line\n" << "Give me some verticality.\n\n";
        k = 2;
    }
    getch();
}
void diagonaif()
{
    if (tx0!=tx1 && ty0!=ty1)
    {
        cout << "Wundebar!, it's.. a Dline\n" << "I can make some puns about it but I'm about to dine." << endl;
        cout << "Seriously though, don't forget to press Esc to exit OpenGL window." << endl;
        cout << "And then press Enter to exit the cmd. Why? because it's text based." << endl;
        cout << "Try to forget about the existence of your mouse for a second" << endl;
        cout << "You'll be grateful Steve Jobs popularise it." << endl;
        cout << "Don't forget to have fun!" << endl;
        k=1;
    }
    else
    {
        cout << "It's not a diagonal line\n" << "Give me a diagonal one.\n\n";
        k=2;
    }
    getch();

}


Dengan meng Aplikasikan source code ini pada software program CODE::BLOCKS maka akan terlihat hasil dari outputnya dari source code diatas tersebut.

Dan setelah di compile dengan melakukan menekan CTRL + F9 maka akan muncul hasil comentar yang salah , jika hasil comentar nya adalah complete compile, maka berhasil pada source code nya yang telah di masukan.
Dan langsung saja menekan F5 pada keyboard untuk menjalankan program OpenGL nya.






Tidak ada komentar:

Posting Komentar

About Me...

Foto saya
Jakarta, DKI Jakarta, Indonesia
Sistem Informasi , gunadarma , peroid S1 , since 2012. and many more educatoin.