Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

/* Copyright (c) Mark J. Kilgard, 1994. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed

/* Copyright (c) Mark J. Kilgard, 1994. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ /* blender renders two spinning icosahedrons (red and green). The blending factors for the two icosahedrons vary sinusoidally and slightly out of phase. blender also renders two lines of text in a stroke font: one line antialiased, the other not. */ #include #include #include GLfloat light0_ambient[] = {0.2, 0.2, 0.2, 1.0}; GLfloat light0_diffuse[] = {0.0, 0.0, 0.0, 1.0}; GLfloat light1_diffuse[] = {1.0, 0.0, 0.0, 1.0}; GLfloat light1_position[] = {1.0, 1.0, 1.0, 0.0}; GLfloat light2_diffuse[] = {0.0, 1.0, 0.0, 1.0}; GLfloat light2_position[] = {-1.0, -1.0, 1.0, 0.0}; float s = 0.0; GLfloat angle1 = 0.0, angle2 = 0.0; void output(GLfloat x, GLfloat y, char *text) { char *p; glPushMatrix(); glTranslatef(x, y, 0); for (p = text; *p; p++) glutStrokeCharacter(GLUT_STROKE_ROMAN, *p); glPopMatrix(); } void display(void) { static GLfloat amb[] = {0.4, 0.4, 0.4, 0.0}; static GLfloat dif[] = {1.0, 1.0, 1.0, 0.0}; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_LIGHT1); glDisable(GL_LIGHT2); amb[3] = dif[3] = cos(s) / 2.0 + 0.5; glMaterialfv(GL_FRONT, GL_AMBIENT, amb); glMaterialfv(GL_FRONT, GL_DIFFUSE, dif); glPushMatrix(); glTranslatef(-0.3, -0.3, 0.0); glRotatef(angle1, 1.0, 5.0, 0.0); glCallList(1); /* render ico display list */ glPopMatrix(); glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_LIGHT2); glDisable(GL_LIGHT1); amb[3] = dif[3] = 0.5 - cos(s * .95) / 2.0; glMaterialfv(GL_FRONT, GL_AMBIENT, amb); glMaterialfv(GL_FRONT, GL_DIFFUSE, dif); glPushMatrix(); glTranslatef(0.3, 0.3, 0.0); glRotatef(angle2, 1.0, 0.0, 5.0); glCallList(1); /* render ico display list */ glPopMatrix(); glPushAttrib(GL_ENABLE_BIT); glDisable(GL_DEPTH_TEST); glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D(0, 1500, 0, 1500); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); /* Rotate text slightly to help show jaggies. */ glRotatef(4, 0.0, 0.0, 1.0); output(200, 225, "This is antialiased."); glDisable(GL_LINE_SMOOTH); glDisable(GL_BLEND); output(160, 100, "This text is not."); glPopMatrix(); glMatrixMode(GL_PROJECTION); glPopMatrix(); glPopAttrib(); glMatrixMode(GL_MODELVIEW); glutSwapBuffers(); } void idle(void) { angle1 = (GLfloat) fmod(angle1 + 0.8, 360.0); angle2 = (GLfloat) fmod(angle2 + 1.1, 360.0); s += 0.05; glutPostRedisplay(); } void visible(int vis) { if (vis == GLUT_VISIBLE) glutIdleFunc(idle); else glutIdleFunc(NULL); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutCreateWindow("blender"); glutDisplayFunc(display); glutVisibilityFunc(visible); glNewList(1, GL_COMPILE); /* create ico display list */ glutSolidIcosahedron(); glEndList(); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse); glLightfv(GL_LIGHT1, GL_POSITION, light1_position); glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_diffuse); glLightfv(GL_LIGHT2, GL_POSITION, light2_position); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_LINE_SMOOTH); glLineWidth(2.0); glMatrixMode(GL_PROJECTION); gluPerspective( /* field of view in degree */ 40.0, /* aspect ratio */ 1.0, /* Z near */ 1.0, /* Z far */ 10.0); glMatrixMode(GL_MODELVIEW); gluLookAt(0.0, 0.0, 5.0, /* eye is at (0,0,5) */ 0.0, 0.0, 0.0, /* center is at (0,0,0) */ 0.0, 1.0, 0.); /* up is in positive Y direction */ glTranslatef(0.0, 0.6, -1.0); glutMainLoop(); return 0; /* ANSI C requires main to return int. */ } 

we are meant to use this code using visual studio 2015, OpenGl. to code and make changes to the vertex, lighting, and material properties of the model. and please add a ReadMe.txt file to explain the code, and please add comments to the code. we are supposed to make changes to the code and at thesame time add comments. changes to the vertex, lighting, and material properties of the model

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Case Studies In Business Data Bases

Authors: James Bradley

1st Edition

0030141346, 978-0030141348

More Books

Students also viewed these Databases questions