Membuat Bendera dengan OpenGl

Posted on Updated on


sekarang saya postingkan cara membuat bendera dengan openGL .. berawal dari mata kuliah komputer grafik yang di ajarkan ole bapak edwar saya coba untuk mempublikasikan sebuah program dari openGL yang membentuk sebuah bendera , script ini saya dapatkan dari temen saya  , lumayan lah untuk referensi temen2 semua … oke lah kalau begitu langsung saja di sedot …….

 

Copy dan pastekan Code berikut di Lembar kerja Anda

 //BENDERA AMERIKA
 #include <glut.h>
 #include <cmath>
 
 void DrawStar(float fX, float fY) {
 const float kfPi = 3.1415926535897932384626433832795;
 
 const float kfRadius = 0.0616/2.0;
 const float kfInnerRadius = kfRadius*(1.0/(sin((2.0*kfPi)/5.0)*2.0*cos(kfPi/10.0) + sin((3.0*kfPi)/10.0)));
 glColor3f(1.0, 1.0, 1.0);
 glBegin(GL_TRIANGLE_FAN);
 glVertex3f(fX, fY, 0.0);
 for (int iVertIndex = 0; iVertIndex < 10; ++iVertIndex) {
 float fAngleStart = kfPi/2.0 + (iVertIndex*2.0*kfPi)/10.0;
 float fAngleEnd = fAngleStart + kfPi/5.0;
 if (iVertIndex % 2 == 0) {
 glVertex3f(fX + kfRadius*cos(fAngleStart)/1.9, fY + kfRadius*sin(fAngleStart), 0.0);
 glVertex3f(fX + kfInnerRadius*cos(fAngleEnd)/1.9, fY + kfInnerRadius*sin(fAngleEnd), 0.0);
 } else {
 glVertex3f(fX + kfInnerRadius*cos(fAngleStart)/1.9, fY + kfInnerRadius*sin(fAngleStart), 0.0);
 glVertex3f(fX + kfRadius*cos(fAngleEnd)/1.9, fY + kfRadius*sin(fAngleEnd), 0.0);
 }
 }
 glEnd();
 }
 
 void DrawStars() {
 for (int iStarRow = 0; iStarRow < 9; ++iStarRow) {
 float fY = 6.0/13.0 + (iStarRow + 1)*((7.0/13.0)/10);
 // baris dari lima atau enam bintang
 if (iStarRow % 2 == 0) {
 for (int iStarCol = 0; iStarCol < 6; ++iStarCol) {
 DrawStar(iStarCol*((0.76/1.9)/6.0) + (0.76/1.9)/12.0, fY);
 }
 } else {
 for (int iStarCol = 0; iStarCol < 5; ++iStarCol) {
 DrawStar((iStarCol + 1)*((0.76/1.9)/6.0), fY);
 }
 }
 }
 }
 
 void DrawStripes() {
 for (int iStripeIndex = 0; iStripeIndex < 13; ++iStripeIndex) {
 // Alternatif warna garis 
 if (iStripeIndex % 2 == 0) {
 glColor3f(204.0/255.0, 0.0, 0.0);
 } else {
 glColor3f(1.0, 1.0, 1.0);
 }
 float fStartX = 0.0;
 float fEndX = 1.0;
 float fStartY = iStripeIndex*(1.0/13.0);
 float fEndY = (iStripeIndex + 1)*(1.0/13.0);
 // 7 garis terakhir
 if (iStripeIndex > 5) {
 fStartX = 0.76/1.9;
 }
 glBegin(GL_QUADS);
 glVertex3f(fStartX, fStartY, 0.0);
 glVertex3f(fEndX, fStartY, 0.0);
 glVertex3f(fEndX, fEndY, 0.0);
 glVertex3f(fStartX, fEndY, 0.0);
 glEnd();
 }
 }
 
 void Draw() {
 glClear(GL_COLOR_BUFFER_BIT);
 DrawStripes();
 DrawStars();
 glFlush();
 }
 
 void Initialize() {
 glClearColor(0.0, 0.0, 102.0/255.0, 0.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
 }
 
 int main(int iArgc, char** cppArgv) {
 glutInit(&iArgc, cppArgv);
 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
 glutInitWindowSize(950, 500);
 glutInitWindowPosition(200, 200);
 glutCreateWindow("TRISNANTO DESFRIYANTO");
 Initialize();
 glutDisplayFunc(Draw);
 glutMainLoop();
 return 0;
 }

 

 

semoga bermanfaat  terimakasih

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s