Changeset 1503
- Timestamp:
- Jun 20, 2012, 7:13:35 PM (11 years ago)
- Location:
- trunk/neercs/video
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/neercs/video/render.cpp
r1499 r1503 324 324 { 325 325 CreateGLWindow("LOL"); 326 text_render->Init( screen_size);326 text_render->Init(); 327 327 328 328 m_ready = true; … … 380 380 { 381 381 /* Draw text in an offline buffer */ 382 text_render->Render( screen_size);382 text_render->Render(); 383 383 384 384 if(shader_flag) 385 385 fbo_back->Bind(); 386 387 glViewport(0, 0, screen_size.x, screen_size.y); 386 388 387 389 /* Clear the back buffer */ … … 394 396 ivec2 border_bottom = ivec2(dos_m * 2, dos_m * 2 + font_size.y * ratio_2d.y) 395 397 + ratio_2d * 2; 396 text_render->Blit( screen_size,border_top, screen_size - border_bottom);398 text_render->Blit(border_top, screen_size - border_bottom); 397 399 398 400 glEnable(GL_BLEND); … … 402 404 if(polygon) glEnable(GL_TEXTURE_2D); 403 405 404 glViewport(0, 0, screen_size.x, screen_size.y);405 406 glMatrixMode(GL_PROJECTION); 406 407 mat4 m = mat4::ortho(0, screen_size.x, screen_size.y, 0, -1.f, 1.f); -
trunk/neercs/video/text-render.cpp
r1499 r1503 34 34 m_canvas_size(caca_get_canvas_width(m_caca), 35 35 caca_get_canvas_height(m_caca)), 36 m_fbo_size(m_font_size * m_canvas_size), 36 37 m_cells(m_canvas_size.x * m_canvas_size.y) 37 38 { … … 41 42 } 42 43 43 void TextRender::Init( ivec2 screen_size)44 void TextRender::Init() 44 45 { 45 46 m_font = new TileSet("neercs/video/resource/map.png", … … 68 69 m_vbo3 = new VertexBuffer(m_cells * sizeof(int32_t)); 69 70 70 m_fbo = new FrameBuffer( screen_size);71 m_fbo = new FrameBuffer(m_fbo_size); 71 72 } 72 73 73 void TextRender::Render( ivec2 fbo_size)74 void TextRender::Render() 74 75 { 75 76 /* Transform matrix for the scene: 76 77 * - translate to the centre of the glyph 77 78 * - scale by 2.f * font_size / fbo_size 78 * - translate to the upper left corner */ 79 mat4 xform = mat4::translate(-1.f, 1.f, 0.f) 80 * mat4::scale(vec3(2.f * m_font_size / (fbo_size), 1.f) 79 * - translate to the lower left corner */ 80 mat4 xform = mat4::translate(-1.f, -1.f + 2.0f * m_font_size.y 81 * m_canvas_size.y / m_fbo_size.y, 0.f) 82 * mat4::scale(vec3(2.f * m_font_size / m_fbo_size, 1.f) 81 83 * vec3(1.f, -1.f, 1.f)) 82 84 * mat4::translate(0.5f, 0.5f, 0.f); … … 104 106 105 107 m_fbo->Bind(); 108 glViewport(0, 0, m_fbo_size.x, m_fbo_size.y); 106 109 glDisable(GL_DEPTH_TEST); 107 110 glEnable(GL_POINT_SPRITE); … … 125 128 } 126 129 127 void TextRender::Blit(ivec2 fbo_size, ivec2pos, ivec2 size)130 void TextRender::Blit(ivec2 pos, ivec2 size) 128 131 { 129 132 glDisable(GL_BLEND); … … 132 135 glColor3f(1.0f, 1.0f, 1.0f); 133 136 134 vec2 tc = (vec2)m_canvas_size * m_font_size / fbo_size;137 vec2 tc = (vec2)m_canvas_size * m_font_size / m_fbo_size; 135 138 136 139 glLoadIdentity(); 137 140 glBegin(GL_QUADS); 138 glTexCoord2f(tc.x, 1.0f);141 glTexCoord2f(tc.x, tc.y); 139 142 glVertex2i(pos.x + size.x, pos.y); 140 glTexCoord2f(0.0f, 1.0f);143 glTexCoord2f(0.0f, tc.y); 141 144 glVertex2i(pos.x, pos.y); 142 glTexCoord2f(0.0f, 1.0f - tc.y);145 glTexCoord2f(0.0f, 0.0f); 143 146 glVertex2i(pos.x, pos.y + size.y); 144 glTexCoord2f(tc.x, 1.0f - tc.y);147 glTexCoord2f(tc.x, 0.0f); 145 148 glVertex2i(pos.x + size.x, pos.y + size.y); 146 149 glEnd(); -
trunk/neercs/video/text-render.h
r1499 r1503 9 9 { 10 10 TextRender(caca_canvas_t *caca, ivec2 font_size); 11 void Init( ivec2 screen_size);12 void Render( ivec2 fbo_size);13 void Blit(ivec2 fbo_size, ivec2pos, ivec2 size);11 void Init(); 12 void Render(); 13 void Blit(ivec2 pos, ivec2 size); 14 14 15 15 private: 16 16 caca_canvas_t *m_caca; 17 ivec2 m_font_size, m_canvas_size ;17 ivec2 m_font_size, m_canvas_size, m_fbo_size; 18 18 int m_cells; 19 19
Note: See TracChangeset
for help on using the changeset viewer.