Halo, teman-teman penggemar grafika komputer! 👋
Pada kesempatan kali ini, saya akan membagikan contoh program sederhana untuk menampilkan bola 3D menggunakan OpenGL di IDE Code::Blocks. Program ini memanfaatkan fungsi glutWireSphere
untuk membuat bola dalam bentuk wireframe, serta glRotatef
untuk memberikan efek rotasi.
🔧 Tools yang Digunakan:
-
IDE: Code::Blocks
-
Library: OpenGL (
glut.h
,GLU
, dll.) -
Platform: Windows (menggunakan
<windows.h>
)
🧠Konsep Utama
Program ini terdiri dari beberapa bagian utama:
-
Inisialisasi Tampilan (
init
) -
Fungsi
Display
untuk menggambar bola -
Fungsi
reshape
untuk menyesuaikan viewport -
Fungsi
main
sebagai titik awal program
📜 Source Code Lengkap
#include<windows.h>
#include<math.h>
#include<gl\glut.h>
#define PI 3.14
// Fungsi alternatif untuk membuat bola secara manual (tidak dipakai di main)
void Bola(GLfloat radius)
{
GLdouble inc = PI/12;
GLdouble theta, phi;
for (theta=-PI/2;theta<(PI/2-inc);theta+=inc){
for (phi=0;phi<2*PI;phi+=inc){
glBegin(GL_POLYGON);
glVertex3f(radius*cos(theta)*cos(phi), radius*sin(theta), radius*cos(theta)*sin(phi));
glVertex3f(radius*cos(theta+inc)*cos(phi), radius*sin(theta+inc), radius*cos(theta+inc)*sin(phi));
glVertex3f(radius*cos(theta+inc)*cos(phi+inc), radius*sin(theta+inc), radius*cos(theta+inc)*sin(phi+inc));
glVertex3f(radius*cos(theta)*cos(phi+inc), radius*sin(theta), radius*cos(theta)*sin(phi+inc));
glEnd();
}
}
glFlush();
}
void Display(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,1);
// Menggambar bola wireframe
glutWireSphere(0.5, 25, 10);
// Efek rotasi (sedikit animasi)
glRotatef(0.05, 1, 0, 0);
glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
void reshape(int w, int h){
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glOrtho(-2, 2, -2, 2, 2, 20);
gluLookAt(0, 0, 3, 0, 0, -100, 0, 1, 0);
}
void init(void){
glClearColor(0, 0, 0, 0);
glPolygonMode(GL_FRONT, GL_LINE); // Menampilkan hanya garis luar (wireframe)
glPolygonMode(GL_BACK, GL_LINE);
}
int main(int argc, char* argv[]){
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(500, 200);
glutCreateWindow("Tugas TM12");
init();
glutDisplayFunc(Display);
glutReshapeFunc(reshape);
glutMainLoop();
}
🖼️ Hasil yang Ditampilkan
Program akan menampilkan bola 3D wireframe berwarna putih di atas latar belakang hitam. Bola akan tampak seperti berputar perlahan karena adanya perintah glRotatef
.
📌 Catatan Tambahan
-
Jika ingin menggambar bola tanpa wireframe, kamu bisa menggunakan
glutSolidSphere()
alih-alihglutWireSphere()
. -
Untuk membuat animasi lebih halus, sebaiknya gunakan
GLUT_DOUBLE
untukglutInitDisplayMode
.
Semoga tutorial sederhana ini bermanfaat buat kamu yang sedang belajar grafika komputer dengan OpenGL. Yuk, coba modifikasi sendiri efek rotasinya atau coba tambahkan pencahayaan agar bola tampak lebih realistis!
Kalau ada pertanyaan atau butuh bantuan debugging, feel free untuk komentar di bawah ya! 😊
Komentar
Posting Komentar