Tutorial Melayu

Tetingkap OpenGL

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

Tetingkap OpenGL

Posted on .
This entry is part 1 of 2 in the series OpenGL

Kali ini kita akan belajar bagaimana untuk membina tetingkap menggunakan OpenGL, GLUT dan GLEW. OpenGL juga dikenali sebagai Open Graphics Library, adalah satu library khas untuk aturcara grafik 3D.

Install glut dan glew.

sudo apt-get install freeglut3-dev glew-utils libglew1.6-dev libfreeimage-dev build-essential

Aturcara

Kita mulakan dengan include glut dan juga glew:

#include 
#include 

Kemudian bina fungsi main anda seperti biasa.

int main(int argc, char** argv){

}

GLUT

Ok, sekarang kita akan mulakan dengan memulakan glut

glutInit(&argc, argv);

Setelah memulakan GLUT, kita akan mula memilih mod-mod yang perlu. Sebagai contoh jika kita mahu menggunakan satu ata udua buffer, jika mahu depth buffer dan sebagainya. Untuk artikel pertama ini, kita akan hanya menggunakan satu buffer.

glutInitDisplayMode (GLUT_SINGLE);

Selepas ini, kita boleh menukar saiz dan posisi tetingkap GLUT.

glutInitWindowSize (500, 500); 
glutInitWindowPosition (100, 100);

Setelah selesai, kita akan membina tetingkap GLUT.

glutCreateWindow ("Tetingkap pertama saya");

Ok, jika anda kompil fail ini sekarang (menggunakan Makefile yang disertakan di bawah), sememangnya anda akan dapat melihat tetingkap GLUT tetapi ianya akan tertutup dengan serta merta. Kita memerlukan beberapa lagi panggilan fungsi. Sebagai contoh, kita memerlukan satu fungsi yang dipanggil papar yang kita perlu berikan kepada glut (sebagai callback) supaya glut boleh memanggil fungsi ini sekiranya ia mahu memaparkan sesuatu ke tetingkap glut.

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(); // 

	glFlush(); // Hantar buffer ke tetingkap
}
glutDisplayFunc(papar); 

Kemudian anda perlu memberitahu glut untuk masuk ke dalam “main loop” supaya tetingkap yang dibina tidak tertutup dengan serta merta.

glutMainLoop();

Jika semuanya berjalan lancar, anda sepatutnya mempunyai tetingkap dengan latar belakang berwarna merah.

main.cpp

#include 
#include 

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(); // 

	glFlush(); // Hantar buffer ke tetingkap
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);

	glutInitDisplayMode (GLUT_SINGLE);

	glutInitWindowSize (500, 500); 
	glutInitWindowPosition (100, 100);
	glutCreateWindow ("Tetingkap pertama saya");

	glutDisplayFunc(papar); 

	glutMainLoop(); 
	return 0; 
}

Makefile

CC = g++
CFLAGS = -g -DGL_GLEXT_PROTOTYPES -I./include/ -I/usr/X11R6/include -I/sw/include \
			-I/usr/sww/include -I/usr/sww/pkg/Mesa/include
LDFLAGS = -L./lib/nix -L/usr/X11R6/lib -L/sw/lib -L/usr/sww/lib \
		-L/usr/sww/bin -L/usr/sww/pkg/Mesa/lib -lglut -lGLU -lGL -lX11 -lGLEW -lfreeimage
	
RM = /bin/rm -f 

all: mytest
mytest: main.o
	$(CC) $(CFLAGS) -o mytest main.o $(INCFLAGS) $(LDFLAGS) 
main.o: main.cpp
	$(CC) $(CFLAGS) $(INCFLAGS) -c main.cpp
clean: 
	$(RM) *.o mytest
Series NavigationMenukar saiz tetingkap OpenGL >>
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