| 244 | } |
| 245 | |
| 246 | void FontAtlas::upload() |
| 247 | { |
| 248 | glPixelStorei(GL_UNPACK_ALIGNMENT, 1); |
| 249 | glBindTexture(GL_TEXTURE_2D, mId); |
| 250 | |
| 251 | if (mDepth == 4) { |
| 252 | #ifdef GL_UNSIGNED_INT_8_8_8_8_REV |
| 253 | glTexImage2D(GL_TEXTURE_2D, 0, static_cast<GLint>(GL_RGBA), gl::GLsizei(mWidth), gl::GLsizei(mHeight), 0, GL_BGRA, |
| 254 | GL_UNSIGNED_INT_8_8_8_8_REV, mData.data()); |
| 255 | #else |
| 256 | glTexImage2D(GL_TEXTURE_2D, 0, static_cast<GLint>(GL_RGBA), gl::GLsizei(mWidth), gl::GLsizei(mHeight), 0, GL_RGBA, |
| 257 | GL_UNSIGNED_BYTE, mData.data()); |
| 258 | #endif |
| 259 | } else if (mDepth == 3) { |
| 260 | glTexImage2D(GL_TEXTURE_2D, 0, static_cast<GLint>(GL_RGB), gl::GLsizei(mWidth), gl::GLsizei(mHeight), 0, GL_RGB, |
| 261 | GL_UNSIGNED_BYTE, mData.data()); |
| 262 | } else { |
| 263 | #if defined(GL_ES_VERSION_2_0) || defined(GL_ES_VERSION_3_0) |
| 264 | glTexImage2D(GL_TEXTURE_2D, 0, static_cast<GLint>(GL_LUMINANCE), gl::GLsizei(mWidth), gl::GLsizei(mHeight), 0, GL_LUMINANCE, |
| 265 | GL_UNSIGNED_BYTE, mData.data()); |
| 266 | #else |
| 267 | glTexImage2D(GL_TEXTURE_2D, 0, static_cast<GLint>(GL_RED), gl::GLsizei(mWidth), gl::GLsizei(mHeight), 0, GL_RED, |
| 268 | GL_UNSIGNED_BYTE, mData.data()); |
| 269 | #endif |
| 270 | } |
| 271 | |
| 272 | glBindTexture(GL_TEXTURE_2D, 0); |
| 273 | glPixelStorei(GL_UNPACK_ALIGNMENT, 4); |
| 274 | } |
| 275 | |
| 276 | void FontAtlas::clear() |
| 277 | { |