Tutorial Melayu

OpenGL: Bentuk

Introduction

user

Fairuz

System Engineer (Texas Instruments France), Masters in Electronics , Embedded System Engineering,


LATEST POSTS

Nota: git alias yang biasa digunakan 05th December, 2013

Nota: Android .gitignore 23rd February, 2013

OpenGL

OpenGL: Bentuk

Posted on .

Dalam artikel terdahulu kita ada membincangkan mengenai bagaimana untuk melukis bentuk primitif menggunakan OpenGL yang mana bentuk-bentuk ini adalah bentuk 2D. Kali ini kita akan cuba untuk melukis bentuk-bentuk yang lebih kompleks dalam 3D.

Bentuk 3D hanyalah hasil dari bentuk 2D yang dilukis dalam ruang 3D. OpenGL tidak memberi fungsi untuk melukis bentuk-bentuk 3D seperti kiub, sfera dan piramid tetapi kita boleh membina bentuk-bentuk ini sendiri dengan menggabungkan vertex 2D. Salah satu cara lain adalah dengan menggunakan GLUT untuk membina bentuk-bentuk 3D yang mudah.

Berikut merupakan senarai bentuk-bentuk GLUT yang oleh dicuba.

glutWireCube(double size);  
glutSolidCube(double size);
glutWireSphere(double radius, int slices, int stacks);  
glutSolidSphere(double radius, int slices, int stacks);  
glutWireCone(double radius, double height, int slices, int stacks);  
glutSolidCone(double radius, double height, int slices, int stacks); 
glutWireTorus(double inner_radius, double outer_radius, int sides, int rings);  
glutSolidTorus(double inner_radius, double outer_radius, int sides, int rings);
glutWireTeapot(double size);  
glutSolidTeapot(double size);  

Untuk artikel ini kita akan cuba untuk melukis rangka sfera dengan menggunakan glutWireSphere.

void papar(void){
	glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // Tukar background kepada warna merah
	glClear(GL_COLOR_BUFFER_BIT); // Kosongkan buffer warna
	glLoadIdentity(); // 
	glTranslatef(0.0f, 0.0f, -5.0f);  // alihkan kamera menjauhi paksi z 
 	//binaPrimitif();   // Bina bentuk primitif
	glutWireSphere(1.0f, 8.0f, 8.0f);
	glFlush(); // Hantar buffer ke tetingkap
}

Kompil kod ini dan anda akan dapat melihat sfera ini dari pandangan kamera pada kedudukan (0,0,5).

main.cpp

#include 
#include 

void binaPrimitif(void){
	glBegin(GL_QUADS);
	glColor3f(0.0f, 0.0f, 1.0f); // bucu berwarna biru
	glVertex3f(-1.0f, -1.0f, 0.0f);
	glColor3f(1.0f, 0.0f, 0.0f); // bucu berwarna merah
	glVertex3f(-1.0f, 1.0f, 0.0f);
	glColor3f(0.0f, 1.0f, 0.0f); // bucu berwarna hijau
	glVertex3f(1.0f, 1.0f, 0.0f);
	glColor3f(1.0f, 1.0f, 0.0f); // bucu berwarna kuning
	glVertex3f(1.0f, -1.0f, 0.0f);
	glEnd();
}
 
void tekanKekunci(unsigned char key, int x, int y) {
	switch (key) {
		case 27:  // Keluar dari program
			exit(0) ;
			break ;
		default:
			break ;
	}
}
 
void lepasKekunci(unsigned char key, int x, int y) {
 
}
 
void papar(void){
	glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // Tukar background kepada warna merah
	glClear(GL_COLOR_BUFFER_BIT); // Kosongkan buffer warna
	glLoadIdentity(); // 
	glTranslatef(0.0f, 0.0f, -5.0f);  // alihkan kamera menjauhi paksi z 
 	//binaPrimitif();   // Bina bentuk primitif
	glutWireSphere(1.0f, 8.0f, 8.0f);
	glFlush(); // Hantar buffer ke tetingkap
}
 
void reshape(int width, int height){
	glViewport(0, 0, (GLsizei)width, (GLsizei)height); // 
	glMatrixMode(GL_PROJECTION); // Tukar kepada projection matrix
	glLoadIdentity(); //   
	gluPerspective(60, (GLfloat)width / (GLfloat)height, 1.0, 100.0); // fov, aspect ratio, near and far plane 
	glMatrixMode(GL_MODELVIEW); // Tukar semula ke modelview matrix  	
}
 
int main(int argc, char** argv)
{
	glutInit(&argc, argv);
 
	glutInitDisplayMode (GLUT_SINGLE);
 
	glutInitWindowSize (500, 500); 
	glutInitWindowPosition (100, 100);
	glutCreateWindow ("Tetingkap pertama saya");
 
	// Now, we define callbacks and functions for various tasks.
	glutDisplayFunc(papar); 
	glutReshapeFunc(reshape);
	glutKeyboardFunc(tekanKekunci);
    glutKeyboardUpFunc(lepasKekunci);
 
	glutMainLoop(); // Start the main code
	return 0;   /* ANSI C requires main to return int. */
}
profile

Fairuz

http://www.tutorialmelayu.com

System Engineer (Texas Instruments France), Masters in Electronics , Embedded System Engineering,

There are no comments.

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (0) ...
Navigation