[update] Implemented rendering font text.
This commit is contained in:
parent
ac37fbf3e5
commit
d49aa08b45
3
.bin/.gitignore
vendored
Normal file
3
.bin/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*
|
||||||
|
!/.gitignore
|
||||||
|
!/fonts
|
@ -1,7 +1,8 @@
|
|||||||
/// License: MIT
|
/// License: MIT
|
||||||
module sj.Font;
|
module sj.Font;
|
||||||
|
|
||||||
import std.exception,
|
import std.conv,
|
||||||
|
std.exception,
|
||||||
std.format,
|
std.format,
|
||||||
std.string;
|
std.string;
|
||||||
|
|
||||||
@ -22,8 +23,48 @@ class Font {
|
|||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
Texture2DRef Render(string text, size_t px) {
|
Texture2DRef CreateTexture(
|
||||||
assert(false);
|
vec2i sz, string str, vec4 color, size_t px) {
|
||||||
|
auto text = sfText_create().enforce;
|
||||||
|
scope(exit) sfText_destroy(text);
|
||||||
|
|
||||||
|
sfText_setFont(text, font_);
|
||||||
|
sfText_setString(text, str.toStringz);
|
||||||
|
sfText_setCharacterSize(text, px.to!uint);
|
||||||
|
sfText_setFillColor(text, sfBlack); // TODO: change color
|
||||||
|
|
||||||
|
auto buf = sfRenderTexture_create(sz.x, sz.y, false).enforce;
|
||||||
|
scope(exit) sfRenderTexture_destroy(buf);
|
||||||
|
sfRenderTexture_drawText(buf, text, null);
|
||||||
|
|
||||||
|
auto sftex = sfRenderTexture_getTexture(buf).enforce;
|
||||||
|
|
||||||
|
auto tex = Texture2D.Create();
|
||||||
|
Texture2DAllocator allocator;
|
||||||
|
with (allocator) {
|
||||||
|
internalFormat = GL_RGBA8;
|
||||||
|
size = sz;
|
||||||
|
format = GL_RED;
|
||||||
|
type = GL_UNSIGNED_BYTE;
|
||||||
|
Allocate(tex);
|
||||||
|
}
|
||||||
|
|
||||||
|
gl.CopyImageSubData(
|
||||||
|
sfTexture_getNativeHandle(sftex),
|
||||||
|
GL_TEXTURE_2D,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
tex.id,
|
||||||
|
GL_TEXTURE_2D,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
sz.x, sz.y, 1
|
||||||
|
);
|
||||||
|
return tex;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Reference in New Issue
Block a user