Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "cgRender.h"
  3. #include "surfaceModelParser.h"
  4. typedef unsigned char BYTE;
  5.  
  6. GLuint texture;
  7. GLfloat eyex;
  8. GLfloat eyey;
  9. GLfloat eyez;
  10. GLfloat centerx;
  11. GLfloat centery;
  12. GLfloat centerz;
  13. GLfloat upx = 0;
  14. GLfloat upy = 1;
  15. GLfloat upz = 0;
  16. GLfloat lightz = 10.0f;
  17. GLfloat lightx = 50.0f;
  18. GLfloat LightPosition[] = {lightx, 0, lightz};
  19.  
  20.  
  21.  
  22. void init()
  23. {
  24. glClearColor (0.0, 0.0, 0.0, 0.0);
  25. cout << "init" << endl;
  26.  
  27. GLfloat LightAmbient[] = {1.0f, 1.0f, 1.0f, 1.0f};
  28. GLfloat LightDiffuse[] = {0.7f, 0.7f, 0.7f, 0.7f};
  29. GLfloat LightSpecular[] = {0.2f, 0.2f, 0.2f, 0.2f};
  30. GLfloat MaterialSpecular[] = {0.3f, 0.3f, 0.3f, 1.0f};
  31. GLfloat MaterialShininess[] = {10.0};
  32.  
  33. glShadeModel (GL_SMOOTH);
  34.  
  35. // Enable lighting
  36. glEnable (GL_LIGHTING);
  37. glEnable (GL_LIGHT0);
  38. glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
  39. glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse);
  40. glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient);
  41. glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, MaterialSpecular);
  42. glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, MaterialShininess);
  43.  
  44. // Enable Z-buffering
  45. glEnable(GL_DEPTH_TEST);
  46.  
  47.  
  48.  
  49.  
  50.  
  51. glEnable(GL_TEXTURE_2D);
  52. glGenTextures( 1, &texture );
  53. glBindTexture( GL_TEXTURE_2D, texture );
  54. glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
  55. glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
  56. glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
  57. glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
  58. glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
  59.  
  60. //glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texdata);
  61.  
  62. gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,GL_RGBA, GL_UNSIGNED_BYTE, texdata );
  63.  
  64. glGetError();
  65.  
  66.  
  67.  
  68. }
  69.  
  70.  
  71.  
  72.  
  73. void setAttr(Vertex * vertex, int id) {
  74. TextureMapping mapping = textures[id];
  75. glTexCoord2f(mapping.x, mapping.y);
  76. glNormal3f(vertex->normal.x, vertex->normal.y, vertex->normal.z);
  77. glVertex3f(vertex->x, vertex->y, vertex->z);
  78. }
  79.  
  80. void display(void)
  81. {
  82.  
  83.  
  84.  
  85. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  86. glColor3i(100, 100, 100);
  87. glMatrixMode (GL_MODELVIEW);
  88. glLoadIdentity();
  89. gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz);
  90.  
  91. glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
  92.  
  93. cout << "display" << endl;
  94.  
  95.  
  96. for(VECPOLYGON::iterator it = polygons.begin(); it != polygons.end(); ++it) {
  97. glBegin(GL_POLYGON);
  98. Polygon polygon = *it;
  99. setAttr(polygon.first, polygon.first->index);
  100. setAttr(polygon.second, polygon.second->index);
  101. setAttr(polygon.third, polygon.third->index);
  102. glEnd();
  103.  
  104.  
  105.  
  106. }
  107. glFlush();
  108. }
  109.  
  110. void reshape (int w, int h)
  111. {
  112. cout << "reshape" << endl;
  113. glViewport (0, 0, (GLsizei) w , (GLsizei) h);
  114. glMatrixMode (GL_PROJECTION);
  115. glLoadIdentity();
  116. gluPerspective(60, (w/h), 0.001, 10);
  117.  
  118. }
  119.  
  120. void keyboard(unsigned char key, int x, int y)
  121. {
  122. switch (key) {
  123. case 27: // ESC
  124. exit(0);
  125. break;
  126. case 119: // w
  127. eyex -= 0.01;
  128. break;
  129. case 115: // s
  130. eyex += 0.01;
  131. break;
  132. case 97: // a
  133. eyez +=0.01;
  134. break;
  135. case 100: // d
  136. eyez -= 0.01;
  137. break;
  138. case 105: // i
  139. lightz += 0.01;
  140. break;
  141. case 107: // k
  142. lightz -= 0.01;
  143. break;
  144. case 106: // j
  145. lightx += 0.01;
  146. break;
  147. case 108: // l
  148. lightx -= 0.01;
  149. break;
  150. case 114: // r
  151. eyey += 0.01;
  152. break;
  153. case 102: // f
  154. eyey -= 0.01;
  155. break;
  156. default:
  157. display();
  158. }
  159. display();
  160. }
  161.  
  162. int main(int argc, char** argv)
  163. {
  164. parse();
  165. // Initialize graphics window
  166. glutInit(&argc, argv);
  167. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
  168.  
  169. glutInitWindowSize (256, 256);
  170. glutInitWindowPosition (0, 0);
  171. glutCreateWindow (argv[0]);
  172.  
  173. // Initialize OpenGL
  174. init();
  175.  
  176.  
  177.  
  178. // Initialize callback functions
  179. glutDisplayFunc(display);
  180. glutReshapeFunc(reshape);
  181. glutKeyboardFunc(keyboard);
  182.  
  183.  
  184. // Start rendering
  185. glutMainLoop();
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement