File: removedalphafunc.hpp

package info (click to toggle)
openmw 0.47.0-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 23,276 kB
  • sloc: cpp: 249,935; xml: 1,978; sh: 1,327; python: 63; makefile: 26
file content (40 lines) | stat: -rw-r--r-- 1,272 bytes parent folder | download
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
#ifndef OPENMW_COMPONENTS_REMOVEDALPHAFUNC_H
#define OPENMW_COMPONENTS_REMOVEDALPHAFUNC_H

#include <array>

#include <osg/AlphaFunc>

namespace Shader
{
    // State attribute used when shader visitor replaces the deprecated alpha function with a shader
    // Prevents redundant glAlphaFunc calls and lets the shadowsbin know the stateset had alpha testing
    class RemovedAlphaFunc : public osg::AlphaFunc
    {
    public:
        // Get a singleton-like instance with the right func (but a default threshold)
        static osg::ref_ptr<RemovedAlphaFunc> getInstance(GLenum func);

        RemovedAlphaFunc()
            : osg::AlphaFunc()
        {}

        RemovedAlphaFunc(ComparisonFunction func, float ref)
            : osg::AlphaFunc(func, ref)
        {}

        RemovedAlphaFunc(const RemovedAlphaFunc& raf, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY)
            : osg::AlphaFunc(raf, copyop)
        {}

        META_StateAttribute(Shader, RemovedAlphaFunc, ALPHAFUNC);

        void apply(osg::State& state) const override {}

    protected:
        virtual ~RemovedAlphaFunc() = default;

        static std::array<osg::ref_ptr<RemovedAlphaFunc>, GL_ALWAYS - GL_NEVER + 1> sInstances;
    };
}
#endif //OPENMW_COMPONENTS_REMOVEDALPHAFUNC_H