Ignore:
Timestamp:
06/20/08 09:10:28 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Visualization.cpp

    r2788 r2790  
    1515{ 
    1616 
    17         GLUquadric *mSphere; 
     17GLUquadric *mSphere; 
     18 
     19 
     20static 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 
    1866 
    1967/******************************************************/ 
     
    63111        RenderViewPoint(); 
    64112        RenderFrustum(); 
    65         RenderBox(mBvh->GetBox()); 
     113        RenderBoxForViz(mBvh->GetBox()); 
    66114 
    67115        glEnable(GL_LIGHTING); 
     
    106154 
    107155 
    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  
    215156void Visualization::RenderViewPoint() 
    216157{ 
     
    232173} 
    233174 
    234 } 
     175 
     176void 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.