diff options
Diffstat (limited to 'test/06TextureFont')
-rw-r--r-- | test/06TextureFont/main.cpp | 87 |
1 files changed, 18 insertions, 69 deletions
diff --git a/test/06TextureFont/main.cpp b/test/06TextureFont/main.cpp index 9551604..1512ad6 100644 --- a/test/06TextureFont/main.cpp +++ b/test/06TextureFont/main.cpp @@ -1,4 +1,4 @@ -#include <iostream> +#include <iostream> #include "jin.h" using namespace jin::core; @@ -6,13 +6,16 @@ using namespace jin::graphics; using namespace jin::input; using namespace jin::audio; using namespace jin::filesystem; -Font* font = nullptr; -Canvas* canvas; -TTFData* data = nullptr; Shader* shader = nullptr; -Shader* shader2 = nullptr; -Page* page = nullptr; -Texture* tex = nullptr; +TextureFont* font = nullptr; +Text text = Text( +Encode::UTF8, +u8R"( +this is a test +you know what i mean +texture font test ^_^ +)" +); float dt; void onLoad() @@ -31,68 +34,19 @@ Vertex vert(Vertex v) Color frag(Color col, Texture tex, Vertex v) { - return vec4(col.rgb, texel(tex, v.uv).a); -} - -#END_FRAGMENT_SHADER - )"; - const char* canvas_shader = R"( -#VERTEX_SHADER - -Vertex vert(Vertex v) -{ - return v; -} - -#END_VERTEX_SHADER - -#FRAGMENT_SHADER - -Color frag(Color col, Texture tex, Vertex v) -{ - if(v.uv.x <= 0.002f || v.uv.x >= 0.998f || v.uv.y <= 0.005f || v.uv.y >= 0.995f) - return vec4(1, 1, 1, 1); - else - return texel(tex, v.uv); + return col * texel(tex, v.uv); } #END_FRAGMENT_SHADER )"; shader = Shader::createShader(font_shader); - shader2 = Shader::createShader(canvas_shader); Filesystem* fs = Filesystem::get(); fs->mount("../Debug"); Buffer buffer; - fs->read("font.ttf", &buffer); - data = TTFData::createTTFData((const unsigned char*)buffer.data, buffer.size); - font = TTF::createTTF(data, 15); - const char* str = u8R"(Դ爐Τ)"; - int l = strlen(str); - Text text = Text(Encode::UTF8, str, strlen(str)); - page = font->typeset(text, 15, 0); - delete data; - //canvas = Canvas::createCanvas(100, 100); - //page = font->typeset("ˤ!", 120, 20); - buffer.clear(); - fs->read("img.png", &buffer); + fs->read("font2.png", &buffer); Bitmap* bitmap = Bitmap::createBitmap(buffer.data, buffer.size); - tex = Texture::createTexture(bitmap); - canvas = Canvas::createCanvas(page->size.w, page->size.h); - - Canvas::bind(canvas); - glClear(GL_COLOR_BUFFER_BIT); - glColor4f(1, 1, 1, 1); - if (font != nullptr) - { - //font->print(u8"Hello,\n world!", 10, 10); - //font->print(u8"ڧӧ֧ ާڧ!", 10, 10 + 15 * 1); - shader->use(); - font->print(page, 0, 0); - shader->unuse(); - //font->print(u8"!", 10, 10 + 15*3); - //font->render(page); - } - Canvas::unbind(); + const char* charset = u8R"( !"#$£€%&'()*+,-./0123456789;:<=>?`'^@abcdefghijklmnopqrstuvwxyz|~[\]_)"; + font = TextureFont::createTextureFont(bitmap, Text(Encode::UTF8, charset, strlen(charset)), Color(255, 0, 0, 255), 16); } void onEvent(jin::input::Event* e) @@ -109,17 +63,12 @@ void onUpdate(int ms) void onDraw() { + gl.setClearColor(255, 255, 255, 255); glClear(GL_COLOR_BUFFER_BIT); glColor4f(1, 1, 1, 1); - //gl.pushColor(32, 32, 32, 255); - //rect(FILL, 0, 0, 500, 500); - //circle(RenderMode::LINE, 50, 50, 30); - //tex->draw(0, 0, 1, 1, 0); - //tex->draw(20, 50, 1, 1, 0); - //shader->sendFloat("dt", dt); - shader2->use(); - canvas->draw(20 * sin(dt), 10 * cos(dt), 1, 1, 0); - shader2->unuse(); + shader->use(); + font->print(text, 10, 10, 16); + shader->unuse(); } int main(int argc, char* argv[]) |