- Timestamp:
- 06/20/08 09:10:28 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Visualization.cpp
r2788 r2790 15 15 { 16 16 17 GLUquadric *mSphere; 17 GLUquadric *mSphere; 18 19 20 static void RenderBoxForViz(const AxisAlignedBox3 &box) 21 { 22 glBegin(GL_LINE_LOOP); 23 glVertex3d(box.Min().x, box.Max().y, box.Min().z); 24 glVertex3d(box.Max().x, box.Max().y, box.Min().z); 25 glVertex3d(box.Max().x, box.Min().y, box.Min().z); 26 glVertex3d(box.Min().x, box.Min().y, box.Min().z); 27 glEnd(); 28 29 glBegin(GL_LINE_LOOP); 30 glVertex3d(box.Min().x, box.Min().y, box.Max().z); 31 glVertex3d(box.Max().x, box.Min().y, box.Max().z); 32 glVertex3d(box.Max().x, box.Max().y, box.Max().z); 33 glVertex3d(box.Min().x, box.Max().y, box.Max().z); 34 glEnd(); 35 36 glBegin(GL_LINE_LOOP); 37 glVertex3d(box.Max().x, box.Min().y, box.Min().z); 38 glVertex3d(box.Max().x, box.Min().y, box.Max().z); 39 glVertex3d(box.Max().x, box.Max().y, box.Max().z); 40 glVertex3d(box.Max().x, box.Max().y, box.Min().z); 41 glEnd(); 42 43 glBegin(GL_LINE_LOOP); 44 glVertex3d(box.Min().x, box.Min().y, box.Min().z); 45 glVertex3d(box.Min().x, box.Min().y, box.Max().z); 46 glVertex3d(box.Min().x, box.Max().y, box.Max().z); 47 glVertex3d(box.Min().x, box.Max().y, box.Min().z); 48 glEnd(); 49 50 glBegin(GL_LINE_LOOP); 51 glVertex3d(box.Min().x, box.Min().y, box.Min().z); 52 glVertex3d(box.Max().x, box.Min().y, box.Min().z); 53 glVertex3d(box.Max().x, box.Min().y, box.Max().z); 54 glVertex3d(box.Min().x, box.Min().y, box.Max().z); 55 glEnd(); 56 57 glBegin(GL_LINE_LOOP); 58 glVertex3d(box.Min().x, box.Max().y, box.Min().z); 59 glVertex3d(box.Max().x, box.Max().y, box.Min().z); 60 glVertex3d(box.Max().x, box.Max().y, box.Max().z); 61 glVertex3d(box.Min().x, box.Max().y, box.Max().z); 62 63 glEnd(); 64 } 65 18 66 19 67 /******************************************************/ … … 63 111 RenderViewPoint(); 64 112 RenderFrustum(); 65 RenderBox (mBvh->GetBox());113 RenderBoxForViz(mBvh->GetBox()); 66 114 67 115 glEnable(GL_LIGHTING); … … 106 154 107 155 108 void Visualization::RenderBox(const AxisAlignedBox3 &box)109 {110 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);111 glDisable(GL_CULL_FACE);112 glColor3f(1.0f, 0.0f, 0.0f);113 114 glBegin(GL_QUADS);115 glVertex3f(box.Min().x, box.Max().y, box.Min().z);116 glVertex3f(box.Max().x, box.Max().y, box.Min().z);117 glVertex3f(box.Max().x, box.Min().y, box.Min().z);118 glVertex3f(box.Min().x, box.Min().y, box.Min().z);119 glEnd();120 121 glBegin(GL_QUADS);122 glVertex3f(box.Min().x, box.Min().y, box.Max().z);123 glVertex3f(box.Max().x, box.Min().y, box.Max().z);124 glVertex3f(box.Max().x, box.Max().y, box.Max().z);125 glVertex3f(box.Min().x, box.Max().y, box.Max().z);126 glEnd();127 128 glBegin(GL_QUADS);129 glVertex3f(box.Max().x, box.Min().y, box.Min().z);130 glVertex3f(box.Max().x, box.Min().y, box.Max().z);131 glVertex3f(box.Max().x, box.Max().y, box.Max().z);132 glVertex3f(box.Max().x, box.Max().y, box.Min().z);133 glEnd();134 135 glBegin(GL_QUADS);136 glVertex3f(box.Min().x, box.Min().y, box.Min().z);137 glVertex3f(box.Min().x, box.Min().y, box.Max().z);138 glVertex3f(box.Min().x, box.Max().y, box.Max().z);139 glVertex3f(box.Min().x, box.Max().y, box.Min().z);140 glEnd();141 142 glBegin(GL_QUADS);143 glVertex3f(box.Min().x, box.Min().y, box.Min().z);144 glVertex3f(box.Max().x, box.Min().y, box.Min().z);145 glVertex3f(box.Max().x, box.Min().y, box.Max().z);146 glVertex3f(box.Min().x, box.Min().y, box.Max().z);147 glEnd();148 149 glBegin(GL_QUADS);150 glVertex3f(box.Min().x, box.Max().y, box.Min().z);151 glVertex3f(box.Max().x, box.Max().y, box.Min().z);152 glVertex3f(box.Max().x, box.Max().y, box.Max().z);153 glVertex3f(box.Min().x, box.Max().y, box.Max().z);154 glEnd();155 156 glEnable(GL_CULL_FACE);157 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);158 }159 160 161 void Visualization::RenderFrustum()162 {163 glColor3f(1.0f, 0.0f, 0.0f);164 165 Vector3 ftl, ftr, fbl, fbr, ntl, ntr, nbl, nbr;166 mCamera->ComputePoints(ftl, ftr, fbl, fbr, ntl, ntr, nbl, nbr);167 168 glLineWidth(2);169 170 glBegin(GL_LINE_LOOP);171 glVertex3d(fbl.x, fbl.y, fbl.z);172 glVertex3d(fbr.x, fbr.y, fbr.z);173 glVertex3d(ftr.x, ftr.y, ftr.z);174 glVertex3d(ftl.x, ftl.y, ftl.z);175 glEnd();176 177 glBegin(GL_LINE_LOOP);178 glVertex3d(nbl.x, nbl.y, nbl.z);179 glVertex3d(nbr.x, nbr.y, nbr.z);180 glVertex3d(ntr.x, ntr.y, ntr.z);181 glVertex3d(ntl.x, ntl.y, ntl.z);182 glEnd();183 184 glBegin(GL_LINE_LOOP);185 glVertex3d(fbl.x, fbl.y, fbl.z);186 glVertex3d(ftl.x, ftl.y, ftl.z);187 glVertex3d(ntl.x, ntl.y, ntl.z);188 glVertex3d(nbl.x, nbl.y, nbl.z);189 glEnd();190 191 glBegin(GL_LINE_LOOP);192 glVertex3d(fbr.x, fbr.y, fbr.z);193 glVertex3d(ftr.x, ftr.y, ftr.z);194 glVertex3d(ntr.x, ntr.y, ntr.z);195 glVertex3d(nbr.x, nbr.y, nbr.z);196 glEnd();197 198 glBegin(GL_LINE_LOOP);199 glVertex3d(fbr.x, fbr.y, fbr.z);200 glVertex3d(fbl.x, fbl.y, fbl.z);201 glVertex3d(nbl.x, nbl.y, nbl.z);202 glVertex3d(nbr.x, nbr.y, nbr.z);203 glEnd();204 205 glBegin(GL_LINE_LOOP);206 glVertex3d(ftr.x, ftr.y, ftr.z);207 glVertex3d(ftl.x, ftl.y, ftl.z);208 glVertex3d(ntl.x, ntl.y, ntl.z);209 glVertex3d(ntr.x, ntr.y, ntr.z);210 glEnd();211 }212 213 214 215 156 void Visualization::RenderViewPoint() 216 157 { … … 232 173 } 233 174 234 } 175 176 void Visualization::RenderFrustum() 177 { 178 glColor3f(1.0f, 0.0f, 0.0f); 179 180 Vector3 ftl, ftr, fbl, fbr, ntl, ntr, nbl, nbr; 181 mCamera->ComputePoints(ftl, ftr, fbl, fbr, ntl, ntr, nbl, nbr); 182 183 glLineWidth(2); 184 185 glBegin(GL_LINE_LOOP); 186 glVertex3d(fbl.x, fbl.y, fbl.z); 187 glVertex3d(fbr.x, fbr.y, fbr.z); 188 glVertex3d(ftr.x, ftr.y, ftr.z); 189 glVertex3d(ftl.x, ftl.y, ftl.z); 190 glEnd(); 191 192 glBegin(GL_LINE_LOOP); 193 glVertex3d(nbl.x, nbl.y, nbl.z); 194 glVertex3d(nbr.x, nbr.y, nbr.z); 195 glVertex3d(ntr.x, ntr.y, ntr.z); 196 glVertex3d(ntl.x, ntl.y, ntl.z); 197 glEnd(); 198 199 glBegin(GL_LINE_LOOP); 200 glVertex3d(fbl.x, fbl.y, fbl.z); 201 glVertex3d(ftl.x, ftl.y, ftl.z); 202 glVertex3d(ntl.x, ntl.y, ntl.z); 203 glVertex3d(nbl.x, nbl.y, nbl.z); 204 glEnd(); 205 206 glBegin(GL_LINE_LOOP); 207 glVertex3d(fbr.x, fbr.y, fbr.z); 208 glVertex3d(ftr.x, ftr.y, ftr.z); 209 glVertex3d(ntr.x, ntr.y, ntr.z); 210 glVertex3d(nbr.x, nbr.y, nbr.z); 211 glEnd(); 212 213 glBegin(GL_LINE_LOOP); 214 glVertex3d(fbr.x, fbr.y, fbr.z); 215 glVertex3d(fbl.x, fbl.y, fbl.z); 216 glVertex3d(nbl.x, nbl.y, nbl.z); 217 glVertex3d(nbr.x, nbr.y, nbr.z); 218 glEnd(); 219 220 glBegin(GL_LINE_LOOP); 221 glVertex3d(ftr.x, ftr.y, ftr.z); 222 glVertex3d(ftl.x, ftl.y, ftl.z); 223 glVertex3d(ntl.x, ntl.y, ntl.z); 224 glVertex3d(ntr.x, ntr.y, ntr.z); 225 glEnd(); 226 } 227 228 229 }
Note: See TracChangeset
for help on using the changeset viewer.