| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrVertexEffect_DEFINED |
| #define GrVertexEffect_DEFINED |
| |
| #include "GrEffect.h" |
| |
| /** |
| * If an effect needs specialized vertex shader code, then it must inherit from this class. |
| * Otherwise it won't be able to add vertex attribs, and it might be given a vertexless shader |
| * program in emitCode. |
| */ |
| class GrVertexEffect : public GrEffect { |
| public: |
| GrVertexEffect() { fHasVertexCode = true; } |
| |
| protected: |
| /** |
| * Subclasses call this from their constructor to register vertex attributes (at most |
| * kMaxVertexAttribs). This must only be called from the constructor because GrEffects are |
| * immutable. |
| */ |
| void addVertexAttrib(GrSLType type) { |
| SkASSERT(fVertexAttribTypes.count() < kMaxVertexAttribs); |
| fVertexAttribTypes.push_back(type); |
| } |
| |
| private: |
| typedef GrEffect INHERITED; |
| }; |
| |
| #endif |