quadrenderer.h 2.31 KB
Newer Older
schultezub's avatar
schultezub committed
1
2
3
4
// ================================================================================================
// 
// This file is part of the CAMPVis Software Framework.
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2014, all rights reserved,
schultezub's avatar
schultezub committed
6
7
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
//      Chair for Computer Aided Medical Procedures
8
9
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
10
// 
schultezub's avatar
schultezub committed
11
12
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
// 
13
14
15
16
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
// except in compliance with the License. You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
schultezub's avatar
schultezub committed
17
// 
18
19
20
21
// Unless required by applicable law or agreed to in writing, software distributed under the 
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
// either express or implied. See the License for the specific language governing permissions 
// and limitations under the License.
schultezub's avatar
schultezub committed
22
23
24
// 
// ================================================================================================

25
26
27
#ifndef QUADRENDERER_H__
#define QUADRENDERER_H__

28
#include "cgt/singleton.h"
29
#include "cgt/cgt_gl.h"
30

31
32
#include "core/coreapi.h"

schultezub's avatar
schultezub committed
33
namespace campvis {
34
35
36
37
    class FaceGeometry;

    /**
     * Small helper singleton class for rendering the default [-1, 1]^2 quad.
38
     * Texture coordinates are [0, 1]^2.
39
     */
40
41
    class CAMPVIS_CORE_API QuadRenderer : public cgt::Singleton<QuadRenderer> {
        friend class cgt::Singleton<QuadRenderer>;
42
43
44

    public:
        /**
45
         * Virtual Destructor
46
47
48
         */
        virtual ~QuadRenderer();

49
50
        /**
         * Renders a [-1, 1]^2 quad in the XY plane having texture coordinates [0, 1]^2.
51
         * \param   mode    OpenGL rendering mode (defaults to GL_TRIANGLE_FAN).
52
         */
53
        void renderQuad(GLenum mode = GL_TRIANGLE_FAN);
54
55

    private:
56
        /// Private Constructor, must be called from valid OpenGL context.
57
58
        QuadRenderer();

59
        FaceGeometry* _quad;    ///< The FaceGeometry that renders the quad.
60
61
    };

62
#define QuadRdr cgt::Singleton<campvis::QuadRenderer>::getRef()
63
64
65
66

}

#endif // QUADRENDERER_H__