ソースを参照

Added LoadScreen Render mode back.

Thomas Buck 11年前
コミット
815ad09bd6
3個のファイルの変更85行の追加5行の削除
  1. 3
    0
      include/Render.h
  2. 6
    4
      src/Game.cpp
  3. 76
    1
      src/Render.cpp

+ 3
- 0
include/Render.h ファイルの表示

88
 
88
 
89
     typedef enum {
89
     typedef enum {
90
         modeDisabled,
90
         modeDisabled,
91
+        modeLoadScreen,
91
         modeVertexLight,
92
         modeVertexLight,
92
         modeSolid,
93
         modeSolid,
93
         modeWireframe,
94
         modeWireframe,
118
         skeletalMesh
119
         skeletalMesh
119
     } RenderMeshType;
120
     } RenderMeshType;
120
 
121
 
122
+    void drawLoadScreen();
123
+
121
     /*!
124
     /*!
122
      * \brief Constructs an object of Render
125
      * \brief Constructs an object of Render
123
      */
126
      */

+ 6
- 4
src/Game.cpp ファイルの表示

48
     mRender = new Render();
48
     mRender = new Render();
49
     mRender->initTextures(gOpenRaider->mDataDir, &mTextureStart, &mTextureLevelOffset);
49
     mRender->initTextures(gOpenRaider->mDataDir, &mTextureStart, &mTextureLevelOffset);
50
 
50
 
51
+    mRender->setMode(Render::modeLoadScreen);
52
+
51
     return 0;
53
     return 0;
52
 }
54
 }
53
 
55
 
61
 }
63
 }
62
 
64
 
63
 int Game::loadLevel(const char *level) {
65
 int Game::loadLevel(const char *level) {
64
-    destroy();
66
+    if (mLoaded)
67
+        destroy();
65
 
68
 
66
     mName = bufferString("%s", level);
69
     mName = bufferString("%s", level);
67
 
70
 
119
 
122
 
120
 void Game::display() {
123
 void Game::display() {
121
     if (mLoaded) {
124
     if (mLoaded) {
122
-        //glClearColor(0.00f, 0.70f, 0.00f, 1.0f);
123
-        //glClear(GL_COLOR_BUFFER_BIT);
124
 
125
 
125
-        mRender->Display();
126
     }
126
     }
127
+
128
+    mRender->Display();
127
 }
129
 }
128
 
130
 

+ 76
- 1
src/Render.cpp ファイルの表示

47
 
47
 
48
 ViewVolume gViewVolume; /* View volume for frustum culling */
48
 ViewVolume gViewVolume; /* View volume for frustum culling */
49
 
49
 
50
+void Render::drawLoadScreen()
51
+{
52
+    float x = 0.0f, y = 0.0f, z = -160.0f;
53
+    float w = 500.0f, h = 500.0f;
54
+
55
+
56
+    if (mTexture.getTextureCount() <= 0)
57
+        return;
58
+
59
+    // Mongoose 2002.01.01, Rendered while game is loading...
60
+    //! \fixme seperate logo/particle coor later
61
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
62
+    glLoadIdentity();
63
+
64
+    glColor3fv(WHITE);
65
+
66
+    if (mFlags & Render::fGL_Lights)
67
+        glDisable(GL_LIGHTING);
68
+
69
+    // Mongoose 2002.01.01, Draw logo/load screen
70
+    glTranslatef(0.0f, 0.0f, -2000.0f);
71
+    glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
72
+
73
+    glBindTexture(GL_TEXTURE_2D, 3);
74
+
75
+    glBegin(GL_TRIANGLE_STRIP);
76
+    glTexCoord2f(1.0, 1.0);
77
+    glVertex3f(x + w, y + h, z);
78
+    glTexCoord2f(0.0, 1.0);
79
+    glVertex3f(x - w, y + h, z);
80
+    glTexCoord2f(1.0, 0.0);
81
+    glVertex3f(x + w, y - h, z);
82
+    glTexCoord2f(0.0, 0.0);
83
+    glVertex3f(x - w, y - h, z);
84
+    glEnd();
85
+
86
+    if (mFlags & Render::fGL_Lights)
87
+        glEnable(GL_LIGHTING);
88
+
89
+#ifdef USING_EMITTER
90
+    // Mongoose 2002.01.01, Test particle prototype on load screen
91
+    if (mEmitter && mFlags & Render::fParticles)
92
+    {
93
+        glPushMatrix();
94
+        glLoadIdentity();
95
+
96
+        glEnable(GL_BLEND);
97
+        glRotatef(180.0, 1.0, 0.0, 0.0);
98
+        glTranslatef(0.0, -820.0, 575.0);
99
+        glScalef(80.0, 80.0, 80.0);
100
+
101
+        // Update view volume for vising
102
+        updateViewVolume();
103
+        gViewVolume.getFrustum(mEmitter->mFrustum);
104
+        mEmitter->Flags(Emitter::fUseDepthSorting, true);
105
+        mEmitter->Draw();
106
+
107
+        glPopMatrix();
108
+    }
109
+#endif
110
+
111
+    glFlush();
112
+}
113
+
50
 
114
 
51
 int compareEntites(const void *voidA, const void *voidB)
115
 int compareEntites(const void *voidA, const void *voidB)
52
 {
116
 {
462
             glDisable(GL_TEXTURE_2D);
526
             glDisable(GL_TEXTURE_2D);
463
             break;
527
             break;
464
         default:
528
         default:
465
-            glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
529
+            if (mMode == Render::modeLoadScreen)
530
+            {
531
+                glBlendFunc(GL_SRC_ALPHA, GL_ONE);
532
+            }
533
+            else
534
+            {
535
+                glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
536
+            }
466
 
537
 
467
             glClearColor(BLACK[0], BLACK[1], BLACK[2], BLACK[3]);
538
             glClearColor(BLACK[0], BLACK[1], BLACK[2], BLACK[3]);
468
 
539
 
528
     {
599
     {
529
         case Render::modeDisabled:
600
         case Render::modeDisabled:
530
             return;
601
             return;
602
+        case Render::modeLoadScreen:
603
+            //! \fixme entry for seperate main drawing method -- Mongoose 2002.01.01
604
+            drawLoadScreen();
605
+            return;
531
         default:
606
         default:
532
             ;
607
             ;
533
     }
608
     }

読み込み中…
キャンセル
保存