Grafika komputer telah berhasil mengembangkan interkasi dengan sarana
keyboard dan light-pen yang ditemukan oleh Ivan Sutherland dengan sistem
penggambaran interaktif.
Input prmitif grafika dan pirantinya
Sebagaimana
bnyak piranti dan cara untuk pemaparan output grafika komputer, demikian pula
untuk piranti input yaitu
- Keyboard(untuk memasukkan karakter atau stirng)
- Grafik Tablets
- Tombol
- Joystick dan trackball
- Mouse
- Knobs
- Space balls
- Data gloves
Fungsi dasar pembuatan animasi dengan
menggunakan keyboardFunction
Dalam penggunaan glutKeyboardFunc dimungkinkan untuk
mendeteksi input dari keyboard. Fungsi ini diletakkan pada fungsi main dari
program, dan parameternya adalah callback function yang telah didefinisikan
berupa fungsi dengan 3 parameter, seperti contoh di bawah ini.
1.
Fungsi untuk karakter dan angka pada keyboard
void
myKeyboard(unsigned char key, int x, int y){
if(key == 'char
ataupun angka')
//kode-kode y=untuk event yang akan di
lakukan
}
Misal :
void
myKeyboard(unsigned char key, int x, int y){
if(key == ‘a’)
glRotatef ( 90,0,1,0 );
}
Agar fungsi tersebut dapat dideteksi secara
berkala, maka pada fungsi main perlu ditambahkan fungsi : glutKeyboardFunc (myKeyboard);
2. Fungsi untuk tombol special
Tombol spesial meliputi :
- F1, F2,F3, F4,
- tombol navigasi panah keatas, panah kebawah, panah kekiri, dan panah kekanan,
- tombol page Down, page Up, Home, End, Insert
void mySpecialKeyboard(int key, int x, int y){
switch(key){
case GLUT_KEY_<opsional> :
…;// kode event yang akan dilakukan
break;
}
}
Misal :
void mySpecialKeyboard(int key, int x, int y){
switch(key){
case GLUT_KEY_LEFT> :
glRotatef (90, 1, 0, 0);
break;
}
}
Agar fungsi tersebut dapat dideteksi secara
berkala, maka pada fungsi main perlu ditambahkan fungsi : glutSpecialFunc (mySpecialKeyboard);
Contoh program :
Hasil :
Contoh program :
#include <stdlib.h>
#include <glut.h>
void segitiga
(){
glBegin (GL_TRIANGLES);
glColor3f (1,0,0);
glVertex2f
(0.,0.);
glVertex2f
(150,150);
glVertex2f
(-150,150);
glColor3f
(1,0,0);
glVertex2f
(0.,0.);
glVertex2f
(-150,-150);
glVertex2f
(150,-150);
glEnd();
}
void myKeyboard(unsigned char key, int x, int y){
if(key=='c') glRotatef
(10,0,0,-4);
else if(key='u') glRotatef (10,0,0,4);
}
void
renderScene(){
glClear(GL_COLOR_BUFFER_BIT);
segitiga();
glFlush();
}
void timer(int value){
glutPostRedisplay();
glutTimerFunc(50,timer,0);
}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
glutCreateWindow("latihan 6");
gluOrtho2D(-320.,320.,-340.,340.);
glutDisplayFunc(renderScene);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(1,timer,0);
glClearColor(1.,1.,1.,0); // untuk memberikan background putih
glutMainLoop();
}Hasil :
0 comments