|
@@ -47,6 +47,70 @@ const float CYAN[] = { 0.0f, 1.0f, 1.0f, 1.0f };
|
47
|
47
|
|
48
|
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
|
115
|
int compareEntites(const void *voidA, const void *voidB)
|
52
|
116
|
{
|
|
@@ -462,7 +526,14 @@ void Render::setMode(int n)
|
462
|
526
|
glDisable(GL_TEXTURE_2D);
|
463
|
527
|
break;
|
464
|
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
|
538
|
glClearColor(BLACK[0], BLACK[1], BLACK[2], BLACK[3]);
|
468
|
539
|
|
|
@@ -528,6 +599,10 @@ void Render::Display()
|
528
|
599
|
{
|
529
|
600
|
case Render::modeDisabled:
|
530
|
601
|
return;
|
|
602
|
+ case Render::modeLoadScreen:
|
|
603
|
+ //! \fixme entry for seperate main drawing method -- Mongoose 2002.01.01
|
|
604
|
+ drawLoadScreen();
|
|
605
|
+ return;
|
531
|
606
|
default:
|
532
|
607
|
;
|
533
|
608
|
}
|