diff options
author | chai <chaifix@163.com> | 2018-10-10 13:10:23 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-10 13:10:23 +0800 |
commit | 498664ceba42e3b609e4464c246de164c61775c7 (patch) | |
tree | c1741b8ba567d5d0aafef7831298bdddb348b7d7 /test/05Font/main.cpp | |
parent | 95c088f3e48321c155eabc00fc4710692405855d (diff) |
*update
Diffstat (limited to 'test/05Font/main.cpp')
-rw-r--r-- | test/05Font/main.cpp | 70 |
1 files changed, 48 insertions, 22 deletions
diff --git a/test/05Font/main.cpp b/test/05Font/main.cpp index 3b58bae..3ce8183 100644 --- a/test/05Font/main.cpp +++ b/test/05Font/main.cpp @@ -10,13 +10,14 @@ Font* font = nullptr; Canvas* canvas; FontData* data = nullptr; Shader* shader = nullptr; +Shader* shader2 = nullptr; Page* page = nullptr; Texture* tex = nullptr; float dt; void onLoad() { - const char* program = R"( + const char* font_shader = R"( #VERTEX_SHADER Vertex vert(Vertex v) @@ -28,8 +29,6 @@ Vertex vert(Vertex v) #FRAGMENT_SHADER -vec2 stepSize = vec2(0.02f, 0.02f); - Color frag(Color col, Texture tex, Vertex v) { return vec4(col.rgb, texel(tex, v.uv).a); @@ -37,15 +36,37 @@ Color frag(Color col, Texture tex, Vertex v) #END_FRAGMENT_SHADER )"; - shader = Shader::createShader(program); + 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); +} + +#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 = FontData::createFontData((const unsigned char*)buffer.data, buffer.size); - font = Font::createFont(data, 18); - page = font->typeset(u8R"( -平安時代中期の物語。紫式部著。ただし,そのすべてが紫式部の筆に成るのでは + font = Font::createFont(data, 15); + page = font->typeset(u8R"(平安時代中期の物語。紫式部著。ただし,そのすべてが紫式部の筆に成るのでは ないとする説もある。 54帖。寛弘 (1004~12) 頃成立か。物語は3部に分けてみ ることができる。第1部は,容貌,才能などすべてにすぐれた主人公光源氏が,多 啊哈噶科膜卡して広く迎えられている。貴族社会の苦悩を摘出したところに磁瓷得 @@ -61,7 +82,7 @@ Color frag(Color col, Texture tex, Vertex v) 》开始在日本东京电视台播出。2004年,漫画进而改编成电影。2006年,漩涡鸣人入选 美国《新闻周刊》日文版于10月18日发行的特集中选出的“全世界最受尊敬的100位日本 人”。[2] -)", 20, 0); +)", 17, 0); delete data; //canvas = Canvas::createCanvas(100, 100); //page = font->typeset("こんにちは世界!", 120, 20); @@ -69,7 +90,22 @@ Color frag(Color col, Texture tex, Vertex v) fs->read("img.png", &buffer); Bitmap* bitmap = Bitmap::createBitmap(buffer.data, buffer.size); tex = Texture::createTexture(bitmap); - canvas = Canvas::createCanvas(100, 100); + canvas = Canvas::createCanvas(page->width, page->height); + + 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(); } void onEvent(jin::input::Event* e) @@ -90,23 +126,13 @@ void onDraw() glColor4f(1, 1, 1, 1); //gl.pushColor(32, 32, 32, 255); //rect(FILL, 0, 0, 500, 500); - shader->use(); //circle(RenderMode::LINE, 50, 50, 30); //tex->draw(0, 0, 1, 1, 0); //tex->draw(20, 50, 1, 1, 0); //shader->sendFloat("dt", dt); - Canvas::bind(canvas); - if (font != nullptr) - { - //font->print(u8"Hello,你好\n啊 world!", 10, 10); - //font->print(u8"Привет мир!", 10, 10 + 15 * 1); - font->print(page, 12, 10 + 15 * 2); - //font->print(u8"你好世界!", 10, 10 + 15*3); - //font->render(page); - } - Canvas::unbind(); - canvas->draw(0, 0, 1, 1, 0); - shader->unuse(); + shader2->use(); + canvas->draw(20 * sin(dt), 10 * cos(dt), 1, 1, 0); + shader2->unuse(); } int main(int argc, char* argv[]) |