1. Arief Hidayat (51414566)
2. Bentar Adhityajaya Pangestu (52414134)
3. Fajar Tri Suhadi (53414889)
4. Osman Tri Prakoso (58414356)
5. Yuli Marlena (5C414531)
Kelas : 3IA12
Pada postan ini kami akan menunjukann membuat objek 3D dengan devC++ dan library openGL , kami membuat segitiga tapii dalam bentuk 3D.
kodingannya :
/*
* OGL02Animation.cpp:
3D Shapes with animation
*/
#include <GL/glut.h>
// GLUT, include glu.h and gl.h
/* Global variables */
char title[] = "3D Shapes with animation";
GLfloat anglePyramid = 0.0f;
// Rotational angle for pyramid [NEW]
GLfloat angleCube = 0.0f;
// Rotational angle for cube [NEW]
int refreshMills = 15;
// refresh interval in milliseconds [NEW]
/* Initialize OpenGL Graphics */
void initGL() {
glClearColor(255.0f, 255.0f, 255.0f, 1.0f); // Set background color to
black and opaque
glClearDepth(1.0f);
// Set background depth to farthest
glEnable(GL_DEPTH_TEST); //
Enable depth testing for z-culling
glDepthFunc(GL_LEQUAL); // Set
the type of depth-test
glShadeModel(GL_SMOOTH); // Enable
smooth shading
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Nice perspective corrections
}
/* Handler for window-repaint event. Called back when the
window first appears and
whenever the window
needs to be re-painted. */
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear color and
depth buffers
glMatrixMode(GL_MODELVIEW); //
To operate on model-view matrix
// Render a pyramid
consists of 4 triangles
glLoadIdentity();
// Reset the model-view matrix
glTranslatef(0.0f,
0.0f, -6.0f); // Move left and into the
screen
glRotatef(anglePyramid, 1.0f, 1.0f, 0.0f); // Rotate about the (1,1,0)-axis [NEW]
glBegin(GL_POLYGON);
//Alas1
glColor3f(0.0f,
0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glEnd(); // Done drawing the pyramid
glBegin(GL_POLYGON); //
Begin drawing the pyramid with 4 triangles
//front RED
glColor3f(255.0f, 0.0f,
128.0f);
glVertex3f(0.0f,
1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f,
-1.0f, -1.0f);
// Back GREEN
glColor3f(0.0f,
1.0f, 0.0f);
glVertex3f(0.0f,
1.0f, 0.0f);
glVertex3f(1.0f,
-1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
// Left BLUE
glColor3f(0.0f,128.0f,255.0f);
glVertex3f(
0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glEnd(); // Done drawing the pyramid
glutSwapBuffers(); // Swap the
front and back frame buffers (double buffering)
// Update the
rotational angle after each refresh [NEW]
anglePyramid +=
1.2f;
angleCube -= 0.15f;
}
/* Called back when timer expired [NEW] */
void timer(int value) {
glutPostRedisplay(); // Post
re-paint request to activate display()
glutTimerFunc(refreshMills, timer, 0); // next timer call milliseconds
later
}
/* Handler for window re-size event. Called back when the
window first appears and
whenever the window
is re-sized with its new width and height */
void reshape(GLsizei width, GLsizei height) { // GLsizei for non-negative integer
// Compute aspect
ratio of the new window
if (height == 0)
height = 1; // To prevent
divide by 0
GLfloat aspect =
(GLfloat)width / (GLfloat)height;
// Set the viewport
to cover the new window
glViewport(0, 0,
width, height);
// Set the aspect
ratio of the clipping volume to match the viewport
glMatrixMode(GL_PROJECTION); //
To operate on the Projection matrix
glLoadIdentity(); //
Reset
// Enable
perspective projection with fovy, aspect, zNear and zFar
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}
/* Main function: GLUT runs as a console application
starting at main() */
int main(int argc, char** argv) {
glutInit(&argc,
argv); // Initialize GLUT
glutInitDisplayMode(GLUT_DOUBLE); // Enable double buffered mode
glutInitWindowSize(640, 480); //
Set the window's initial width & height
glutInitWindowPosition(50, 50); // Position the window's initial
top-left corner
glutCreateWindow(title);
// Create window with the given title
glutDisplayFunc(display); //
Register callback handler for window re-paint event
glutReshapeFunc(reshape); //
Register callback handler for window re-size event
initGL(); // Our own OpenGL
initialization
glutTimerFunc(0,
timer, 0); // First timer call
immediately [NEW]
glutMainLoop(); //
Enter the infinite event-processing loop
return 0;
}/*
* OGL02Animation.cpp:
3D Shapes with animation
*/
#include <GL/glut.h>
// GLUT, include glu.h and gl.h
/* Global variables */
char title[] = "3D Shapes with animation";
GLfloat anglePyramid = 0.0f;
// Rotational angle for pyramid [NEW]
GLfloat angleCube = 0.0f;
// Rotational angle for cube [NEW]
int refreshMills = 15;
// refresh interval in milliseconds [NEW]
/* Initialize OpenGL Graphics */
void initGL() {
glClearColor(255.0f, 255.0f, 255.0f, 1.0f); // Set background color to
black and opaque
glClearDepth(1.0f);
// Set background depth to farthest
glEnable(GL_DEPTH_TEST); //
Enable depth testing for z-culling
glDepthFunc(GL_LEQUAL); // Set
the type of depth-test
glShadeModel(GL_SMOOTH); // Enable
smooth shading
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Nice perspective corrections
}
/* Handler for window-repaint event. Called back when the
window first appears and
whenever the window
needs to be re-painted. */
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear color and
depth buffers
glMatrixMode(GL_MODELVIEW); //
To operate on model-view matrix
// Render a pyramid
consists of 4 triangles
glLoadIdentity();
// Reset the model-view matrix
glTranslatef(0.0f,
0.0f, -6.0f); // Move left and into the
screen
glRotatef(anglePyramid, 1.0f, 1.0f, 0.0f); // Rotate about the (1,1,0)-axis [NEW]
glBegin(GL_POLYGON);
//Alas1
glColor3f(0.0f,
0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glEnd(); // Done drawing the pyramid
glBegin(GL_POLYGON); //
Begin drawing the pyramid with 4 triangles
//front RED
glColor3f(255.0f, 0.0f,
128.0f);
glVertex3f(0.0f,
1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f,
-1.0f, -1.0f);
// Back GREEN
glColor3f(0.0f,
1.0f, 0.0f);
glVertex3f(0.0f,
1.0f, 0.0f);
glVertex3f(1.0f,
-1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
// Left BLUE
glColor3f(0.0f,128.0f,255.0f);
glVertex3f(
0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(-1.0f,-1.0f, 1.0f);
glEnd(); // Done drawing the pyramid
glutSwapBuffers(); // Swap the
front and back frame buffers (double buffering)
// Update the
rotational angle after each refresh [NEW]
anglePyramid +=
1.2f;
angleCube -= 0.15f;
}
/* Called back when timer expired [NEW] */
void timer(int value) {
glutPostRedisplay(); // Post
re-paint request to activate display()
glutTimerFunc(refreshMills, timer, 0); // next timer call milliseconds
later
}
/* Handler for window re-size event. Called back when the
window first appears and
whenever the window
is re-sized with its new width and height */
void reshape(GLsizei width, GLsizei height) { // GLsizei for non-negative integer
// Compute aspect
ratio of the new window
if (height == 0)
height = 1; // To prevent
divide by 0
GLfloat aspect =
(GLfloat)width / (GLfloat)height;
// Set the viewport
to cover the new window
glViewport(0, 0,
width, height);
// Set the aspect
ratio of the clipping volume to match the viewport
glMatrixMode(GL_PROJECTION); //
To operate on the Projection matrix
glLoadIdentity(); //
Reset
// Enable
perspective projection with fovy, aspect, zNear and zFar
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}
/* Main function: GLUT runs as a console application
starting at main() */
int main(int argc, char** argv) {
glutInit(&argc,
argv); // Initialize GLUT
glutInitDisplayMode(GLUT_DOUBLE); // Enable double buffered mode
glutInitWindowSize(640, 480); //
Set the window's initial width & height
glutInitWindowPosition(50, 50); // Position the window's initial
top-left corner
glutCreateWindow(title);
// Create window with the given title
glutDisplayFunc(display); //
Register callback handler for window re-paint event
glutReshapeFunc(reshape); //
Register callback handler for window re-size event
initGL(); // Our own OpenGL
initialization
glutTimerFunc(0,
timer, 0); // First timer call
immediately [NEW]
glutMainLoop(); //
Enter the infinite event-processing loop
return 0;
}
Dan outputnya :
0 komentar:
Posting Komentar