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

OpenGL

开发平台:

Windows_Unix

  1. #include "../../main.h"
  2. extern float m_Z;
  3. GLUquadricObj *Quad;
  4. extern NIMG Moving,Chrome;
  5. float Angle=0.0f;
  6. bool Init = true;
  7. float X = 0.0;
  8. bool  TimeRec = false;
  9. extern NSCENE   NScene[NUM_SCENE];
  10. extern Naskel3D Naskel;
  11.  
  12. namespace moving
  13. {
  14. void Draw()
  15. {
  16. glPushMatrix();
  17. float time = timeGetTime()*0.001f;
  18. glPushMatrix();
  19. if (Init) {
  20.              
  21. Amiga::init();
  22. glMatrixMode(GL_PROJECTION);
  23. glLoadIdentity();
  24. gluPerspective(165.0f, 4/3, 0.001f, 100.0f); 
  25. glMatrixMode(GL_MODELVIEW);
  26. glLoadIdentity();
  27. Init = false;
  28. }
  29. glTranslatef(0, 0, -6);
  30.   
  31. glEnable(GL_BLEND);
  32. glBlendFunc(GL_SRC_ALPHA,GL_ONE); 
  33. glEnable(GL_TEXTURE_2D);
  34. glTranslatef(0, 0, 5);
  35. glRotatef(Angle/2,1.0,0.0,0.0);
  36. glRotatef(Angle/3,0.0,1.0f,0.0);
  37. glBindTexture(GL_TEXTURE_2D, Moving.ID);
  38. glBegin(GL_QUADS);
  39.   // Front Face
  40.   glNormal3f( 0.0, 0.0, 1.0f);
  41.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
  42.   glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
  43.   glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
  44.   glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
  45.   // Back Face
  46.   glNormal3f( 0.0f, 0.0f,-1.0f);
  47.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
  48.   glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
  49.   glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
  50.   glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
  51.   // Top Face
  52.   glNormal3f( 0.0f, 1.0f, 0.0f);
  53.   glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
  54.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
  55.   glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
  56.   glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
  57.   // Bottom Face
  58.   glNormal3f( 0.0f,-1.0f, 0.0f);
  59.   glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
  60.   glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
  61.   glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
  62.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
  63.   // Right face
  64.   glNormal3f( 1.0f, 0.0f, 0.0f);
  65.   glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
  66.   glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
  67.   glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
  68.   glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
  69.   // Left Face
  70.   glNormal3f(-1.0f, 0.0f, 0.0f);
  71.   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
  72.   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
  73.   glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
  74.   glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
  75. glEnd();
  76. glDisable(GL_BLEND);
  77. glDisable(GL_TEXTURE_2D);
  78. glPopMatrix();
  79. // Le rectangle blanc // 116.03
  80. if (TimeRec!=true && time>95)
  81. TimeRec=true;
  82. if (TimeRec) {
  83. // On remet la projection... 
  84. glMatrixMode(GL_PROJECTION);
  85. glLoadIdentity();
  86. gluPerspective(0.0f, 2.0, 0.0f, 0.0f); 
  87. glMatrixMode(GL_MODELVIEW);         // Return to the modelview matrix
  88. glLoadIdentity();
  89. glPushMatrix();
  90. glDisable(GL_BLEND);
  91. glEnable(GL_DEPTH_TEST);
  92. glColor3f(1.0, 1.0, 1.0);
  93. glScalef(X, X, 1);
  94. glTranslatef(0.0,0.0, 0.7);
  95. X +=0.005;
  96. if (X >=1) {
  97. X =1;
  98. glDisable(GL_TEXTURE_2D);
  99. glPushMatrix();
  100. glTranslatef(0.0f, 0.0f, 0.7);
  101. Amiga::Draw();
  102. glPopMatrix();
  103. glDisable(GL_TEXTURE_2D);
  104. Naskel.glDrawText(300, 450,"In memory of my dead Amiga ;o)");
  105. }
  106. // Rectangle 
  107. glDisable(GL_TEXTURE_2D);
  108. glLineWidth(3);
  109. glBegin(GL_LINE_LOOP);
  110. glVertex3f(0.6, -0.3, 0.01);
  111. glVertex3f( 0.2, -0.3, 0.01);
  112. glVertex3f( 0.2,  0.3, 0.01);
  113. glVertex3f(0.6,  0.3, 0.01);
  114. glEnd();
  115. glPopMatrix();
  116. }
  117. Angle+=1.9f;
  118. glMatrixMode(GL_PROJECTION);
  119. glLoadIdentity();
  120. gluPerspective(165.0, 4/3, 0.001, 100.0);  // Do the perspective calculations. Last value = max clipping depth
  121. glMatrixMode(GL_MODELVIEW);         // Return to the modelview matrix
  122. glLoadIdentity();
  123. glLoadIdentity();
  124. } // End Draw()  
  125. } // end namespace