File: CameraCubeMapDecl.h

package info (click to toggle)
darkradiant 3.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 41,080 kB
  • sloc: cpp: 264,743; ansic: 10,659; python: 1,852; xml: 1,650; sh: 92; makefile: 21
file content (56 lines) | stat: -rw-r--r-- 1,414 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#pragma once

#include "MapExpression.h"
#include "NamedBindable.h"

namespace shaders
{

/**
 * \brief Declaration parsed from a "cameraCubeMap" stage in a material
 * definition.
 *
 * A cameraCubeMap specifies a texture prefix, to which the suffixes "_up",
 * "_down", "_left", "_right", "_forward" and "_back" are appended to give the
 * six cube map images.
 *
 * A CameraCubeMapDecl object stores the texture prefix and implements the
 * NamedBindable interface so that it can bind the cube map texture in GL and
 * return it to the texture manager.
 */
class CameraCubeMapDecl :
    public IMapExpression,
    public NamedBindable
{
    // The texture prefix
    std::string _prefix;

private:
    // Construct with a prefix
    CameraCubeMapDecl(const std::string& prefix);

    virtual bool isCubeMap() const override
    {
        return true;
    }

    // Load and bind the given image with the given cube-map direction
    void bindDirection(const std::string& dir, GLuint glDir) const;

public:

    /* NamedBindable implementation */
    std::string getIdentifier() const override;
    TexturePtr bindTexture(const std::string& name, Role role) const override;

    std::string getExpressionString() override;

    /**
     * \brief
     * Construct and return a CameraCubeMapDecl from the given texture prefix.
     */
    static NamedBindablePtr createForPrefix(const std::string& prefix);
};

}