Bangun Prisma (Visual Studio 2008)

Praktikum kali ini di suruh membuat Prisma atau limas... berhubung nilai jika mngerjakan Prisma lebih besar, maka aku meillih prisma.
Prisma Segitiga

berikut source codenya.... INGAT!!!! ini menggunakan software "Visual Studio 2008" dengan beberapa library tambahan...


#include <windows.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>
#include <stdarg.h> 
#include <glut.h>
#include <glu.h>



void initRendering() {
      glEnable(GL_DEPTH_TEST);
      glEnable(GL_COLOR_MATERIAL);
      glEnable(GL_LIGHTING);
      glEnable(GL_LIGHT0);
      glEnable(GL_LIGHT1);
      glEnable(GL_NORMALIZE);
      glShadeModel(GL_SMOOTH);
}

void handleResize(int w, int h) {
      glViewport(0, 0, w, h);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluPerspective(45.0, (double)w / (double)h, 1.0, 200.0);
}

float _angle = 60.0f;

void drawScene() {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glTranslatef(0.0f, 0.0f, -8.0f);

      GLfloat ambientColor[] = {0.2f, 0.2f, 0.2f, 1.0f};
      glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);

      GLfloat lightColor0[] = {0.5f, 0.5f, 0.5f, 1.0f};
      GLfloat lightPos0[] = {4.0f, 0.0f, 8.0f, 1.0f};
Limas segi empat
      glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor0);
      glLightfv(GL_LIGHT0, GL_POSITION, lightPos0);

//radius
      GLfloat lightColor1[] = {0.5f, 0.2f, 0.2f, 1.0f};
      GLfloat lightPos1[] = {-1.0f, 0.5f, 0.5f, 0.0f};
      glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor1);
      glLightfv(GL_LIGHT1, GL_POSITION, lightPos1);

      glRotatef(_angle, 1.0f, 1.0f, 1.0f);
     
      glBegin(GL_QUADS);
     
      glColor3f(0.0f, 1.0f, 0.0f);        //green
    glVertex3f(-1, 0, -2);
      glVertex3f(1, 0, -2);
      glVertex3f(0, 2, -2);
      glVertex3f(-1, 0, -2);

      glColor3f(0.0f, 0.0f, 1.0f);        //green
    glVertex3f(-1, 0, 1);
      glVertex3f(1, 0, 1);
      glVertex3f(0, 2, 1);
      glVertex3f(-1, 0, 1);

      glColor3f(1.0f, 0.0f, 0.0f);        //red
    glVertex3f(-1, 0, -2);
      glVertex3f(0, 2, -2);
      glVertex3f(0, 2, 1);
      glVertex3f(-1, 0, 1);

      glColor3f(1.0f, 1.0f, 0.0f);        //yellow
    glVertex3f(1, 0, -2);
      glVertex3f(0, 2, -2);
      glVertex3f(0, 2, 1);
      glVertex3f(1, 0, 1);

      glColor3f(0.0f, 1.0f, 1.0f);        //last
    glVertex3f(1, 0, -2);
      glVertex3f(1, 0, 1);
      glVertex3f(-1, 0, 1);
      glVertex3f(-1, 0, -2);
                                                                                                                                                                                   
      glEnd();
      glutSwapBuffers();
}

void update(int value) {
      _angle += 1.5f;
      if (_angle > 360) {
            _angle -= 360;
      }
     
      glutPostRedisplay();
      glutTimerFunc(25, update, 0);
}

int main(int argc, char** argv) {
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
      glutInitWindowSize(400, 400);
      glutCreateWindow("LukmanReza.blogspot.com - Lighting");
      initRendering();
      glutDisplayFunc(drawScene);
      glutReshapeFunc(handleResize);     
      glutTimerFunc(25, update, 0);
     
      glutMainLoop();
      return 0;
}

Posting Komentar

0 Komentar