SkGLTextCache::Strike::Strike(Strike* next, int width, int height) { fStrikeWidth = SkNextPow2(SkMax32(kMinStrikeWidth, width)); fStrikeHeight = SkNextPow2(height); fGlyphCount = 0; fNextFreeOffsetX = 0; fNext = next; fStrikeWidthShift = SkNextLog2(fStrikeWidth); fStrikeHeightShift = SkNextLog2(fStrikeHeight); if (next) { SkASSERT(next->fStrikeHeight == fStrikeHeight); } // create an empty texture to receive glyphs fTexName = 0; glGenTextures(1, &fTexName); glBindTexture(GL_TEXTURE_2D, fTexName); glTexImage2D(GL_TEXTURE_2D, 0, gTextTextureFormat, fStrikeWidth, fStrikeHeight, 0, gTextTextureFormat, gTextTextureType, NULL); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); }
void SkGL::SetTexParamsClamp(bool doFilter) { GLenum filter = doFilter ? GL_LINEAR : GL_NEAREST; SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); }
void SkGL::SetTexParams(bool doFilter, SkShader::TileMode tx, SkShader::TileMode ty) { SkASSERT((unsigned)tx < SK_ARRAY_COUNT(gTileMode2GLWrap)); SkASSERT((unsigned)ty < SK_ARRAY_COUNT(gTileMode2GLWrap)); GLenum filter = doFilter ? GL_LINEAR : GL_NEAREST; SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gTileMode2GLWrap[tx]); SK_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gTileMode2GLWrap[ty]); }