77 {
78 if (texture_->data()) {
79 if (texture_->isSizeChanged()) {
80 glGenTextures(1, &texture_id_);
81
82 glBindTexture(GL_TEXTURE_2D, texture_id_);
83 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
84 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
85 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
86 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
87
88 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, texture_->width(),
89 texture_->height(), 0, texture_->texture_format(),
90 GL_UNSIGNED_BYTE, texture_->data());
91
92 glBindTexture(GL_TEXTURE_2D, 0);
93
94 texture_->removeDirty();
95 } else if (texture_->isDirty()) {
96 glBindTexture(GL_TEXTURE_2D, texture_id_);
97 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, texture_->width(),
98 texture_->height(), texture_->texture_format(),
99 GL_UNSIGNED_BYTE, texture_->data());
100 glBindTexture(GL_TEXTURE_2D, 0);
101 texture_->removeDirty();
102 }
103 }
104
105 glActiveTexture(GL_TEXTURE0);
106 glBindTexture(GL_TEXTURE_2D, texture_id_);
108 glBindTexture(GL_TEXTURE_2D, 0);
109}