Misc.cpp
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:2k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. //
  2. // a64ki
  3. // Copyright (c) 2002 Henrik Carlgren
  4. // http://ziruz.cjb.net
  5. // ziruz@hotpop.com
  6. //
  7. //
  8. // INCLUDE FILES
  9. //
  10. #include "misc.h"
  11. #include <windows.h>
  12. #include <glgl.h>
  13. #include <glglu.h>
  14. //
  15. // FUNCTION: perspective
  16. //
  17. void perspective(void)
  18. {
  19. glViewport(0, 0, 800, 600);
  20. glMatrixMode(GL_PROJECTION);
  21. glLoadIdentity();
  22. gluPerspective(90.0f, 800.0f / 600.0f, 0.1f, 1000.0f);
  23. glMatrixMode(GL_MODELVIEW);
  24. glLoadIdentity();
  25. }
  26. //
  27. // FUNCTION: ortho
  28. //
  29. void ortho(void)
  30. {
  31. glViewport(0, 0, 800, 600);
  32. glMatrixMode(GL_PROJECTION);
  33. glLoadIdentity();
  34. glOrtho(0, 800, 0, 600, -1, 1);
  35. glMatrixMode(GL_MODELVIEW);
  36. glLoadIdentity();
  37. }
  38. //
  39. // FUNCTION: fadeOut
  40. //
  41. void fadeOut(long double length, long double current)
  42. {
  43. //
  44. // FADE BLOCK
  45. //
  46. ortho();
  47. glEnable(GL_BLEND);
  48. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  49. glDisable(GL_DEPTH_TEST);
  50. glDisable(GL_TEXTURE_2D);
  51. glColor4f(0.0f, 0.0f, 0.0f, (float)(1.0f/length) * (float)current);
  52. glBegin(GL_QUADS);
  53. glVertex2i(0, 0);
  54. glVertex2i(0, 600);
  55. glVertex2i(800, 600);
  56. glVertex2i(800, 0);
  57. glEnd();
  58. }
  59. void calcNormal(const VECTOR &a, const VECTOR &b, const VECTOR &c, VECTOR &n)
  60. {
  61. VECTOR p,q;
  62. float length;
  63. p.x = b.x - a.x;
  64. p.y = b.y - a.y;
  65. p.z = b.z - a.z;
  66. q.x = c.x - a.x;
  67. q.y = c.y - a.y;
  68. q.z = c.z - a.z;
  69. n.x = p.y * q.z - p.z * q.y;
  70. n.y = p.z * q.x - p.x * q.z;
  71. n.z = p.x * q.y - p.y * q.x;
  72. length = sqrtf(n.x*n.x + n.y*n.y + n.z*n.z);
  73. if(length == 0.0f)
  74. return;
  75. length = 1.0f / length;
  76. n.x *= length;
  77. n.y *= length;
  78. n.z *= length;
  79. }