Example #1
0
        void RenderFace(Q3Face face)
        {
            Q3Shader shader = m_shaders[face.Shader];

            if (!TestSurfaceflag(shader.SurfaceFlags, Q3SurfaceFlags.Sky))
            if (!TestSurfaceflag(shader.SurfaceFlags, Q3SurfaceFlags.NonSolid))
            if (!TestSurfaceflag(shader.SurfaceFlags, Q3SurfaceFlags.NoDraw))
            if (!TestSurfaceflag(shader.SurfaceFlags, Q3SurfaceFlags.Skip))
            if (!TestContentflag(shader.ContentFlags, Q3ContentFlags.Translucent))
            switch (face.Type)
            {

                case Q3FaceType.Normal:
                    Gl.glAlphaFunc(Gl.GL_GREATER, 0f);
                    RenderPolygonFace(face);
                    break;
                case Q3FaceType.Mesh:
                    Gl.glAlphaFunc(Gl.GL_GREATER, 0.4f);
                    Gl.glDisable(Gl.GL_CULL_FACE);
                    RenderPolygonFace(face);
                    Gl.glEnable(Gl.GL_CULL_FACE);
                    break;
                case Q3FaceType.Flare:
                    break;
                case Q3FaceType.Patch:
                    break;
            }
        }
Example #2
0
        void RenderPolygonFace(Q3Face face)
        {
            uint[] indexes = new uint[face.ElemCount];
            for (int i = 0; i < face.ElemCount; i++)
                indexes[i] = (uint)m_elements[face.ElemStart + i] + (uint)face.VertStart;

            Gl.glDrawElements(Gl.GL_TRIANGLES, face.ElemCount, Gl.GL_UNSIGNED_INT, indexes);
        }