| |
| /* |
| * Copyright 2010 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| |
| #ifndef GrGpuGLFixed_DEFINED |
| #define GrGpuGLFixed_DEFINED |
| |
| #include "GrGpuGL.h" |
| |
| // Fixed Pipeline OpenGL or OpenGL ES 1.x |
| class GrGpuGLFixed : public GrGpuGL { |
| public: |
| GrGpuGLFixed(); |
| virtual ~GrGpuGLFixed(); |
| |
| protected: |
| // overrides from GrGpu |
| virtual bool flushGraphicsState(GrPrimitiveType type); |
| virtual void setupGeometry(int* startVertex, |
| int* startIndex, |
| int vertexCount, |
| int indexCount); |
| |
| private: |
| virtual void resetContext(); |
| |
| // Helpers to make code more readable |
| const GrMatrix& getHWSamplerMatrix(int stage) const { |
| return fHWDrawState.fSamplerStates[stage].getMatrix(); |
| } |
| void recordHWSamplerMatrix(int stage, const GrMatrix& matrix) { |
| fHWDrawState.fSamplerStates[stage].setMatrix(matrix); |
| } |
| |
| // when the texture is GL_RGBA we set the GL_COMBINE texture |
| // environment rgb operand 0 to be GL_COLOR to modulate each incoming |
| // R,G, & B by the texture's R, G, & B. When the texture is alpha-only we |
| // set the operand to GL_ALPHA so that the incoming frag's R, G, &B are all |
| // modulated by the texture's A. |
| enum TextureEnvRGBOperands { |
| kAlpha_TextureEnvRGBOperand, |
| kColor_TextureEnvRGBOperand, |
| }; |
| TextureEnvRGBOperands fHWRGBOperand0[kNumStages]; |
| |
| void flushProjectionMatrix(); |
| |
| // are the currently bound vertex buffers/arrays laid |
| // out for text or other drawing. |
| bool fTextVerts; |
| |
| // On GL we have to build the base vertex offset into the |
| // glVertexPointer/glTexCoordPointer/etc |
| int fBaseVertex; |
| |
| typedef GrGpuGL INHERITED; |
| }; |
| |
| #endif |