refactor(render): TextBackend owns its atlas, and staged glyphs carry a rotation basis
This commit is contained in:
1 parent
90e17a0a11
commit
e074f57ddf
23 files changed
+1073
-227
No files matched your search
@@ -69,10 +69,15 @@ bool TextVertexArray::create(Status* st, UploadMode mode) noexcept {
|
||||
}
|
||||
vao_.bind();
|
||||
buffer_.bind();
|
||||
// Three attributes now: the cell's corner, its atlas rect and the basis that
|
||||
// rotates it (see TextInstance). All of them advance once per instance, like
|
||||
// the line pipeline's, because the corners come from gl_VertexID.
|
||||
vao_.attrib(0u, 2, sizeof(TextInstance), offsetof(TextInstance, x));
|
||||
vao_.attrib(1u, 2, sizeof(TextInstance), offsetof(TextInstance, u));
|
||||
vao_.attrib(2u, 2, sizeof(TextInstance), offsetof(TextInstance, ax));
|
||||
gl::glVertexAttribDivisor(0u, kPerInstance);
|
||||
gl::glVertexAttribDivisor(1u, kPerInstance);
|
||||
gl::glVertexAttribDivisor(2u, kPerInstance);
|
||||
gl::glBindVertexArray(0);
|
||||
epoch_ = buffer_.epoch();
|
||||
return true;
|
||||
@@ -90,6 +95,7 @@ void TextVertexArray::upload(const f32* interleaved, u32 glyphs) noexcept {
|
||||
buffer_.bind();
|
||||
vao_.attrib(0u, 2, sizeof(TextInstance), base + offsetof(TextInstance, x));
|
||||
vao_.attrib(1u, 2, sizeof(TextInstance), base + offsetof(TextInstance, u));
|
||||
vao_.attrib(2u, 2, sizeof(TextInstance), base + offsetof(TextInstance, ax));
|
||||
epoch_ = buffer_.epoch();
|
||||
}
|
||||
instances_ = glyphs;
|
||||
|
||||
Reference in new issue
Block a user