Arsip: [Tutorial] ng-openGL di delphi

more 18 years ago
pebbie
kebetulan lagi ada proyek yang pake openGL. gw mo share pengalaman pake openGL di delphi.
hasil akhir
======
hasil akhir dari tutorial I ini adalah membuat window openGL pada panel form dan menggambar kotak.
[list:a47df79ebe]langkah 1[/list:u:a47df79ebe]
Mari buat aplikasi baru (Menu File > New > Application). akan tampil form kosong,
tambahkan Panel ke form lalu atur ukurannya menjadi Width:640 Height:640.
[list:a47df79ebe]langkah 2[/list:u:a47df79ebe]
ganti ke code view (F12).
tambahkan openGL pada uses clause
uses Windows, Messages,...., ... ,openGL ;[list:a47df79ebe]langkah 3[/list:u:a47df79ebe] tambahkan variabel dan prosedur berikut ini pada deklarasi form bagian private (boleh juga di protected)
{ Private declarations } FDC : HDC; FRC : HGLRC; procedure IdleLoop(Sender : TObject; Var Done : boolean);tekan Shift+Control+C untuk membuat secara otomatis prosedur IdleLoop di bagian implementation (akan muncul kode berikut setelah implementation)
procedure TForm1.IdleLoop(Sender:TObject; Var Done: boolean); begin end;biarkan prosedur ini kosong, akan kita isi nanti. [list:a47df79ebe]langkah 4[/list:u:a47df79ebe] tambahkan event Handler OnCreate pada form (klik dua kali pada form atau klik dua kali pada window event OnCreate)
procedure TForm1.FormCreate(Sender : TObject); var pfd : TPIXELFORMATDESCRIPTOR; pixelformat : integer; begin { TAHAP I : Buat Window OpenGL } FDC := GetDC( Panel1.Handle ); //window openGL akan ditampilkan di panel FillChar(pfd, sizeof(pfd), 0); pfd.nSize := sizeof(pfd); pfd.nVersion := 1; pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; pfd.iPixelType := PFD_TYPE_RGBA; pfd.cColorBits := 16; {$WARNINGS OFF} //biar nggak muncul warning karena penggunaan operator '@' pf := ChoosePixelFormat(FDC, @pfd); SetPixelFormat(FDC, pf, @pfd); {$WARNINGS ON} //kembalikan ke normal FRC := wglCreateContext(FDC); wglMakeCurrent(FDC, FRC); { TAHAP II : Inisialisasi variabel openGL } glSetViewport( 0, 0, Panel1.Width, Panel1.Height ); // glClearColor( 0, 0, 0, 1.0 ); // r:0 g:0 b:0 = hitam glMatrixMode( GL_PROJECTION ); glLoadIdentity; gluPerspective( 45, Panel1.Width/Panel1.Height, 1, 500);//FoV, Aspect Ratio, Near Clip, Far Clip glMatrixMode( GL_MODELVIEW ); glLoadIdentity; { Set Kamera } gluLookAt( 0, 0, -4, 0, 0, 0, 0, 1, 0 );// posisi.x, posisi.y, posisi.z, lookat.x, lookat.y, lookat.z, up.x, up.y, up.z Application.OnIdle := IdleLoop; end;[list:a47df79ebe]langkah 5[/list:u:a47df79ebe] sekarang waktunya mengisi body prosedur IdleLoop
procedure TForm1.IdleLoop(Sender : TObject; Var Done : Boolean); begin glClear( GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT ); glPushMatrix; glColor( 0, 0.5, 0, 1); //warna ijo glBegin(GL_QUADS); //gambar kotak (warna ijo) 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; glPopMatrix; glFlush; SwapBuffers(DC); //update hasil penggambaran ke layar end;OK, tutorial nya sekian dulu, dah magrib nih. nanti dilanjutin lagi ke tutorial berikutnya.

more 18 years ago
pebbie
hmm, klo menurut gw. openGL dah lumayan gampang, karena tinggal ngirimin data objek yang mau digambar sama data bagaimana penggambarannya. datanya bisa dikelola sendiri. :D
maksudnya lebih gampang gimana nih om? :D

more 18 years ago
pebbie
nanti dobel dong?emang klo artikel bedanya gimana ya om? gw pengennya sih marathon.. di satu thread, isinya tutorial bertahap.. :D mulai dari gambar sederhana, transformasi, pemodelan objek, penggunaan kamera, struktur data spasial sampe akhirnya aplikasi 3d bwt studi kasus (CAD, GIS, ato miniGame). tar kalo udah mateng keknya baru deh dikompilasi jadi artikel. :D

more 17 years ago
pebbie
artikel untuk load dan menampilkan model 3d dalam format quake 2 (md2) ada di pebbie.wordpress.com
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- [ASK] Versioning
by cyber_hecker in Tip n Trik Pemrograman more 17 years ago - Menghitung Selisih tanggal
by reza_elka in Hal umum tentang Pascal Indonesia more 14 years ago - Printing dengan Assignfile????
by wati in Tip n Trik Pemrograman more 18 years ago - program rambah schedule task...help...
by adhisyanda in Paradox more 15 years ago - PE Cryptor
by doniking in Hal umum tentang Pascal Indonesia more 18 years ago - Firebird alias record
by vera in FireBird more 16 years ago - image nya ga bisa ngesave??
by afre_N in MySQL more 17 years ago - Installer untuk Delphi (7)
by langithitam in Tip n Trik Pemrograman more 17 years ago - add 1 digit
by nurez in Tip n Trik Pemrograman more 17 years ago - [ask] dimana bisa download delphi 5 trial ??
by R960XT in OOT more 18 years ago