void setData(const GrGLProgramDataManager& pdman, const GrProcessor& proc) override { const LightingFP& lightingFP = proc.cast<LightingFP>(); SkVector3 lightDir = lightingFP.lightDir(); if (lightDir != fLightDir) { pdman.set3fv(fLightDirUni, 1, &lightDir.fX); fLightDir = lightDir; } GrColor lightColor = lightingFP.lightColor(); if (lightColor != fLightColor) { GrGLfloat c[4]; GrColorToRGBAFloat(lightColor, c); pdman.set4fv(fLightColorUni, 1, c); fLightColor = lightColor; } GrColor ambientColor = lightingFP.ambientColor(); if (ambientColor != fAmbientColor) { GrGLfloat c[4]; GrColorToRGBAFloat(ambientColor, c); pdman.set4fv(fAmbientColorUni, 1, c); fAmbientColor = ambientColor; } }
void GrGLConvexPolyEffect::setData(const GrGLProgramDataManager& pdman, const GrProcessor& effect) { const GrConvexPolyEffect& cpe = effect.cast<GrConvexPolyEffect>(); size_t byteSize = 3 * cpe.getEdgeCount() * sizeof(SkScalar); if (0 != memcmp(fPrevEdges, cpe.getEdges(), byteSize)) { pdman.set3fv(fEdgeUniform, cpe.getEdgeCount(), cpe.getEdges()); memcpy(fPrevEdges, cpe.getEdges(), byteSize); } }