1 | #include ".\skybox.h"
|
---|
2 |
|
---|
3 | SkyBox::SkyBox(void)
|
---|
4 | {
|
---|
5 | }
|
---|
6 |
|
---|
7 | SkyBox::~SkyBox(void)
|
---|
8 | {
|
---|
9 | }
|
---|
10 |
|
---|
11 | void SkyBox::Display(Camera& cam)
|
---|
12 | {
|
---|
13 | glMatrixMode(GL_PROJECTION);
|
---|
14 | glPushMatrix();
|
---|
15 | glLoadIdentity();
|
---|
16 |
|
---|
17 | cam.SetProjection();
|
---|
18 |
|
---|
19 | glMatrixMode(GL_MODELVIEW);
|
---|
20 | glPushMatrix();
|
---|
21 | glLoadIdentity();
|
---|
22 | cam.setViewforBbox();
|
---|
23 | /*
|
---|
24 | glRotatef(-cam.m_Orientation.y,0,1,0);
|
---|
25 | glRotatef(360-cam.m_Orientation.x,1,0,0); */
|
---|
26 |
|
---|
27 | glDepthMask(GL_FALSE);
|
---|
28 | glDisable(GL_DEPTH_TEST);
|
---|
29 |
|
---|
30 | float d=-0.002;
|
---|
31 | glEnable(GL_TEXTURE_2D);
|
---|
32 | glBindTexture(GL_TEXTURE_2D,m_Textures[0].getTextureHandler());
|
---|
33 | glBegin(GL_QUADS);
|
---|
34 |
|
---|
35 | glTexCoord2f(-d,1+d);
|
---|
36 | glVertex3f(-1,-1,-1);
|
---|
37 | glTexCoord2f(-d,-d);
|
---|
38 | glVertex3f(-1,1,-1);
|
---|
39 | glTexCoord2f(1+d,-d);
|
---|
40 | glVertex3f(1,1,-1);
|
---|
41 | glTexCoord2f(1+d,1+d);
|
---|
42 | glVertex3f(1,-1,-1);
|
---|
43 | glEnd();
|
---|
44 |
|
---|
45 | glBindTexture(GL_TEXTURE_2D,m_Textures[1].getTextureHandler());
|
---|
46 | glBegin(GL_QUADS);
|
---|
47 |
|
---|
48 | glTexCoord2f(-d,1+d);
|
---|
49 | glVertex3f(+1,-1,+1);
|
---|
50 | glTexCoord2f(-d,-d);
|
---|
51 | glVertex3f(1,1,1);
|
---|
52 | glTexCoord2f(1+d,-d);
|
---|
53 | glVertex3f(-1,1,1);
|
---|
54 | glTexCoord2f(1+d,1+d);
|
---|
55 | glVertex3f(-1,-1,1);
|
---|
56 | glEnd();
|
---|
57 |
|
---|
58 | glBindTexture(GL_TEXTURE_2D,m_Textures[4].getTextureHandler());
|
---|
59 | glBegin(GL_QUADS);
|
---|
60 |
|
---|
61 | glTexCoord2f(-d,1+d);
|
---|
62 | glVertex3f(-1,-1,1);
|
---|
63 | glTexCoord2f(-d,-d);
|
---|
64 | glVertex3f(-1,1,1);
|
---|
65 | glTexCoord2f(1+d,-d);
|
---|
66 | glVertex3f(-1,1,-1);
|
---|
67 | glTexCoord2f(1+d,1+d);
|
---|
68 | glVertex3f(-1,-1,-1);
|
---|
69 | glEnd();
|
---|
70 |
|
---|
71 | glBindTexture(GL_TEXTURE_2D,m_Textures[5].getTextureHandler());
|
---|
72 | glBegin(GL_QUADS);
|
---|
73 |
|
---|
74 | glTexCoord2f(-d,1+d);
|
---|
75 | glVertex3f(1,-1,-1);
|
---|
76 | glTexCoord2f(-d,-d);
|
---|
77 | glVertex3f(1,1,-1);
|
---|
78 | glTexCoord2f(1+d,-d);
|
---|
79 | glVertex3f(1,1,1);
|
---|
80 | glTexCoord2f(1+d,1+d);
|
---|
81 | glVertex3f(1,-1,1);
|
---|
82 | glEnd();
|
---|
83 |
|
---|
84 | glBindTexture(GL_TEXTURE_2D,m_Textures[2].getTextureHandler());
|
---|
85 | glBegin(GL_QUADS);
|
---|
86 |
|
---|
87 | glTexCoord2f(-d,1+d);
|
---|
88 | glVertex3f(-1,-1,-1);
|
---|
89 | glTexCoord2f(1+d,1+d);
|
---|
90 | glVertex3f(-1,-1,1);
|
---|
91 | glTexCoord2f(1+d,-d);
|
---|
92 | glVertex3f(1,-1,1);
|
---|
93 | glTexCoord2f(-d,-d);
|
---|
94 | glVertex3f(1,-1,-1);
|
---|
95 | glEnd();
|
---|
96 |
|
---|
97 | glBindTexture(GL_TEXTURE_2D,m_Textures[3].getTextureHandler());
|
---|
98 | glBegin(GL_QUADS);
|
---|
99 |
|
---|
100 | glTexCoord2f(1+d,-d);
|
---|
101 | glVertex3f(-1,1,1);
|
---|
102 | glTexCoord2f(-d,-d);
|
---|
103 | glVertex3f(-1,1,-1);
|
---|
104 | glTexCoord2f(-d,1+d);
|
---|
105 | glVertex3f(1,1,-1);
|
---|
106 | glTexCoord2f(1+d,1+d);
|
---|
107 | glVertex3f(1,1,1);
|
---|
108 | glEnd();
|
---|
109 |
|
---|
110 |
|
---|
111 | glMatrixMode(GL_MODELVIEW);
|
---|
112 | glPopMatrix();
|
---|
113 | glMatrixMode(GL_PROJECTION);
|
---|
114 | glPopMatrix();
|
---|
115 |
|
---|
116 | glDisable(GL_TEXTURE_2D);
|
---|
117 | glDepthMask(GL_TRUE);
|
---|
118 | glEnable(GL_DEPTH_TEST);
|
---|
119 | }
|
---|
120 |
|
---|
121 | int SkyBox::Initialize(char* filename,char* ext)
|
---|
122 | {
|
---|
123 | char *fname=new char[20];
|
---|
124 | fname[0]=NULL;
|
---|
125 | strcat(fname,filename);
|
---|
126 | m_Textures[0].setFilename(strcat(strcat(fname,"back."),ext));
|
---|
127 | //m_Textures[0].setFilename("test.png");
|
---|
128 | fname=new char[20];
|
---|
129 | fname[0]=NULL;
|
---|
130 | strcat(fname,filename);
|
---|
131 | m_Textures[1].setFilename(strcat(strcat(fname,"front."),ext));
|
---|
132 | fname=new char[20];
|
---|
133 | fname[0]=NULL;
|
---|
134 | strcat(fname,filename);
|
---|
135 | m_Textures[2].setFilename(strcat(strcat(fname,"bottom."),ext));
|
---|
136 | fname=new char[20];
|
---|
137 | fname[0]=NULL;
|
---|
138 | strcat(fname,filename);
|
---|
139 | m_Textures[3].setFilename(strcat(strcat(fname,"top."),ext));
|
---|
140 | fname=new char[20];
|
---|
141 | fname[0]=NULL;
|
---|
142 | strcat(fname,filename);
|
---|
143 | m_Textures[4].setFilename(strcat(strcat(fname,"left."),ext));
|
---|
144 | fname=new char[20];
|
---|
145 | fname[0]=NULL;
|
---|
146 | strcat(fname,filename);
|
---|
147 | m_Textures[5].setFilename(strcat(strcat(fname,"right."),ext));
|
---|
148 |
|
---|
149 | for(int i=0;i<6;i++)
|
---|
150 | {
|
---|
151 | m_Textures[i].LoadImage();
|
---|
152 | }
|
---|
153 |
|
---|
154 | return true;
|
---|
155 | } |
---|