コード例 #1
0
        void spherical_clipmap::draw(context *c)
        {
            // don't bother drawing on the first frame, as we don't have a modelview yet...
            if (clipmap_rings.size())
            {
                glPushAttrib(GL_ALL_ATTRIB_BITS);
                glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);

                glEnableClientState(GL_VERTEX_ARRAY);
                glEnableClientState(GL_INDEX_ARRAY);

                glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);

                color::WHITE.set();

                for (int i = 0; i <= last_ring; ++i)
                {
                    if (i >= first_ring)
                        clipmap_rings[i]->draw();

                    if (c->render_flags & context::RENDER_WIREFRAME)
                    {
                        if (i % 2)
                            color::WHITE.set();
                        else
                            GRAY.set();
                    }
                }

                clipmap_cap->draw();

                //
                glPopClientAttrib();
                glPopAttrib();
            }
        } // spherical_clipmap::draw()