// // Copyright 2014 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // ShaderImpl.h: Defines the abstract rx::ShaderImpl class. #ifndef LIBGLESV2_RENDERER_SHADERIMPL_H_ #define LIBGLESV2_RENDERER_SHADERIMPL_H_ #include #include "common/angleutils.h" #include "libGLESv2/Shader.h" namespace rx { class ShaderImpl { public: ShaderImpl() { } virtual ~ShaderImpl() { } virtual bool compile(const std::string &source) = 0; virtual const std::string &getInfoLog() const = 0; virtual const std::string &getTranslatedSource() const = 0; const std::vector &getVaryings() const { return mVaryings; } const std::vector &getUniforms() const { return mUniforms; } const std::vector &getInterfaceBlocks() const { return mInterfaceBlocks; } const std::vector &getActiveAttributes() const { return mActiveAttributes; } const std::vector &getActiveOutputVariables() const { return mActiveOutputVariables; } std::vector &getVaryings() { return mVaryings; } std::vector &getUniforms() { return mUniforms; } std::vector &getInterfaceBlocks() { return mInterfaceBlocks; } std::vector &getActiveAttributes() { return mActiveAttributes; } std::vector &getActiveOutputVariables() { return mActiveOutputVariables; } protected: DISALLOW_COPY_AND_ASSIGN(ShaderImpl); std::vector mVaryings; std::vector mUniforms; std::vector mInterfaceBlocks; std::vector mActiveAttributes; std::vector mActiveOutputVariables; }; } #endif // LIBGLESV2_RENDERER_SHADERIMPL_H_