Subversion Repositories Kolibri OS

Rev

Rev 5243 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "rs/rsplatform.h"
  2.  
  3. #include "rsgametext.h"
  4.  
  5. #include "rsgame.h"
  6. #include "rsgentex.h"
  7.  
  8. #include "rskos.h"
  9.  
  10.  
  11.  
  12. #ifdef RS_USE_C_LIBS
  13.     #include <math.h>
  14.     #include <stdlib.h>
  15.     #include <string.h>
  16. #endif
  17.  
  18.  
  19. signed short pp_seg[32*8] = {
  20.  
  21.     // 0
  22.     16,     6-16,
  23.     16,     6+16,
  24.     16,     6,
  25.     13,     0,
  26.  
  27.     // 1
  28.     26-16,   16,
  29.     26+16,   16,
  30.     26,      11,
  31.     8,       0,
  32.  
  33.     // 2
  34.     26-16,   16,
  35.     26+16,   16,
  36.     26,      21,
  37.     8,     0,
  38.  
  39.     // 3
  40.     16,     26-16,
  41.     16,     26+16,
  42.     16,     26,
  43.     13,     0,
  44.  
  45.     // 4
  46.     6-16,   16,
  47.     6+16,   16,
  48.     6,      21,
  49.     8,     0,
  50.  
  51.     // 5
  52.     6-16,   16,
  53.     6+16,   16,
  54.     6,      11,
  55.     8,       0,
  56.  
  57.     // 6
  58.     16,     16-16,
  59.     16,     16+16,
  60.     16,     16,
  61.     13,     0,
  62.  
  63.     // 7
  64.     16,     4-22,
  65.     16,     4+22,
  66.     16,     4,
  67.     4,     0,
  68.  
  69.  
  70.  
  71.  
  72.     // 8
  73.     16-16,   16,
  74.     16+16,   16,
  75.     16,      11,
  76.     8,       0,
  77.  
  78.     // 9
  79.     16-16,   16,
  80.     16+16,   16,
  81.     16,      21,
  82.     8,     0,
  83.  
  84.     // 10
  85.     21-16,   11+16,
  86.     21+16,   11-16,
  87.     21,      11,
  88.     9,       0,
  89.  
  90.     // 11 modified
  91.     16-16,   16+16,
  92.     16+16,   16-16,
  93.     21,      21,
  94.     9,       0,
  95.  
  96.     // 12
  97.     16-16,   16-16,
  98.     16+16,   16+16,
  99.     21,      11,
  100.     9,       0,
  101.  
  102.     // 13
  103.     21-16,   21-16,
  104.     21+16,   21+16,
  105.     21,      21,
  106.     9,       0,
  107.  
  108.     // 14
  109.     16,     16-16,
  110.     16,     16+16,
  111.     10,     16,
  112.     7,     0,
  113.  
  114.     // 15
  115.     16,     16-16,
  116.     16,     16+16,
  117.     22,     16,
  118.     7,      0,
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.     // 16
  126.     16-16,   16+16,
  127.     16+16,   16-16,
  128.     11,      11,
  129.     8,       0,
  130.  
  131.     // 17
  132.     11-16,   21+16,
  133.     11+16,   21-16,
  134.     11,      21,
  135.     9,       0,
  136.  
  137.     // 18
  138.     11-16,   11-16,
  139.     11+16,   11+16,
  140.     11,      11,
  141.     9,       0,
  142.  
  143.     // 19
  144.     16-16,   16-16,
  145.     16+16,   16+16,
  146.     11,      21,
  147.     9,       0,
  148.  
  149.     // 20 == copy 11 modified
  150.     21-22,   21+22,
  151.     21+22,   21-22,
  152.     21,      21,
  153.     9,       0,
  154.  
  155.     // 21 - right
  156.     27-12,   28-9,
  157.     27+12,   28+9,
  158.     27,     27,
  159.     4,     0,
  160.  
  161.     // 22 - left
  162.     5-12,   28+9,
  163.     5+12,   28-9,
  164.     5,      27,
  165.     4,     0,
  166.  
  167.  
  168.     // 23
  169.     6-16,   16,
  170.     6+16,   16,
  171.     6,      8,
  172.     5,     0,
  173.  
  174.  
  175.  
  176.     // 24
  177.     16-33,   16,
  178.     16+33,   16,
  179.     16,      13,
  180.     4,     0,
  181.  
  182.  
  183.     // 25
  184.     16-33,   16,
  185.     16+33,   16,
  186.     16,      26,
  187.     4,     0,
  188.  
  189.     // 26
  190.     16,     6-16,
  191.     16,     6+16,
  192.     11,     6,
  193.     7,     0,
  194.  
  195.     // 27
  196.     16,     26-16,
  197.     16,     26+16,
  198.     11,     26,
  199.     7,     0,
  200.  
  201.     // 28
  202.     16,     6-16,
  203.     16,     6+16,
  204.     21,     6,
  205.     7,     0,
  206.  
  207.     // 29
  208.     16,     26-16,
  209.     16,     26+16,
  210.     21,     26,
  211.     7,     0,
  212.  
  213.  
  214.     // 30 ,
  215.     11-22,   27-22,
  216.     11+22,   27+22,
  217.     11,     25,
  218.     6,     0,
  219.  
  220.     // 31 not implemented - need to create up-left DOT for percent(%) sign
  221.     16,     26-16,
  222.     16,     26+16,
  223.     16,     26,
  224.     13,     0,
  225.  
  226.  
  227. };
  228.  
  229. unsigned int ch_seg[64] = {
  230.     0b00111111 /* | 1<<12 | 1<<19 */, // 0 or O
  231.     1<<26 | 1<<8 | 1<<9 | 1<<3, // 1
  232.     0b01011011, // 2
  233.     1<<0 | 1<<12 | 1<<15 | 1<<2 | 1<<3, // 3
  234.     0b01100110, // 4
  235.     0b01101101, // 5
  236.     1<<0 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6, // 6 // old: 1<<6 | 1<<2 | 1<<3 | 1<<4 | 1<<18 | 1<<28, // 6
  237.     1<<23 | 1<<0 | 1<<1 | 1<<13 ,  //0b00000111   , // 7
  238.  
  239.     0b01111111, // 8
  240.     1<<6 | 1<<5 | 1<<0 | 1<<1 | 1<<2 | 1<<3, // 9
  241.     1<<24 | 1<<25, // :
  242.     1<<8 | 1<<25, // ;
  243.     1<<12 | 1<<11, // <
  244.     1<<6, // = (-)
  245.     1<<16 | 1<<19, // >
  246.     1<<23 | 1<<0 | 1<<1 | 1<<15 | 1<<25 | 1<<9, //  ?
  247.  
  248.     1<<19 | 1<<12, // @ (/)
  249.     1<<0 | 1<<1 | 1<<2 | 1<<6 | 1<<4 | 1<<5, // A
  250.     1<<26 | 1<<10 | 1<<6 | 1<<11 | 1<<3 | 1<<4 | 1<<5, // B
  251.     1<<0 | 1<<5 | 1<<4 | 1<<3, // C // corners: 1<<28 | 1<<18 | 1<<17 | 1<<29,
  252.     1<<26 | 1<<27 | 1<<5 | 1<<4 | 1<<10 | 1<<13 , // D
  253.     1<<0 | 1<<14 | 1<<3 | 1<<5 | 1<<4, // E
  254.     1<<0 | 1<<14 | 1<<5 | 1<<4, // F
  255.     1<<0 | 1<<5 | 1<<4 | 1<<3 | 1<<2 | 1<<15, // G
  256.  
  257.     1<<1 | 1<<2 | 1<<5 | 1<<4 | 1<<6, // H
  258.     1<<0 | 1<<8 | 1<<9 | 1<<3, // I
  259.     1<<1 | 1<<2 | 1<<3 | 1<<4, // J
  260.     1<<5 | 1<<4 | 1<<14 | 1<<12 | 1<<11, // K
  261.     1<<5 | 1<<4 | 1<<3, // L
  262.     1<<5 | 1<<4 | 1<<1 | 1<<2 | 1<<16 | 1<<12, // M
  263.     1<<5 | 1<<4 | 1<<16 | 1<<11 | 1<<1 | 1<<2, // N
  264.     1<<16 | 1<<11 | 1<<19 | 1<<12 | 1<<6 | 1<<8 | 1<<9, // O - FREE SYMBOL
  265.  
  266.     1<<4 | 1<<5 | 1<<0 | 1<<1 | 1<<6, // P
  267.     1<<0 | 1<<1 | 1<<13 | 1<<27 | 1<<4 | 1<<5 | 1<<11, // Q // old: 0b00111111 | 1<<11, // Q
  268.     1<<0 | 1<<1 | 1<<6 | 1<<5 | 1<<4 | 1<<11, // R
  269.     (1 << 18 | 1 << 13) | (1 << 29  | 1 << 26) | (1 << 5 | 1 << 2) | (1 << 19 | 1 << 12),  // percent(%) sign,  s == 5 -> // 0b01101101, // S
  270.     1<<0 | 1<<8 | 1<<9, // T
  271.     1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5, // U
  272.     1<<1 | 1<<13 | 1<<17 | 1<<5, // V
  273.     1<<5 | 1<<4 | 1<<19 | 1<<11 | 1<<2 | 1<<1, // W
  274.  
  275.     1<<16 | 1<<11 | 1<<19 | 1<<12, // X
  276.     1<<5 | 1<<6 | 1<<1 | 1<<2 | 1<<3, // Y
  277.     1<<0 | 1<<12 | 1<<19 | 1<<3, // Z
  278.     1<<26 | 1<<8 | 1<<9 | 1<<29 | 1<<2 | 1<<15, // [Ъ
  279.     1<<5 | 1<<4 | 1<<27 | 1<<9 | 1<<14 | 1<<1 | 1<<2, // \Ы
  280.     1<<5 | 1<<4 | 1<<3 | 1<<2 | 1<<6, // ]Ь
  281.     1<<7 | 1<<5 | 1<<4 | 1<<19 | 1<<12 | 1<<1 | 1<<2, // ^Й
  282.     1<<30, // _ (,comma)
  283.  
  284.     1<<25, // ` dot
  285.     1<<5 | 1<<0 | 1<<1 | 1<<6 | 1<<2 | 1<<19, // aЯ
  286.     1<<0 | 1<<5 | 1<<4 | 1<<3 | 1<<2 | 1<<6, // bБ
  287.     1<<5 | 1<<4 | 1<<3 | 1<<1 | 1<<2 | 1<<21, // cЦ
  288.     0b011001000000010000011100, // dД
  289.     1<<0 | 1<<1 | 1<<15 | 1<<2 | 1<<3, // eЭ // with corners: 1<<26 | 1<<10 | 1<<6 | 1<<13 | 1<<27, // eЭ
  290.     1<<0 | 1<<1 | 1<<6 | 1<<5 | 1<<8 | 1<<9, // fФ
  291.     1<<4 | 1<<5 | 1<<0, // gГ
  292.     1<<5 | 1<<4 | 1<<3 | 1<<1 | 1<<2 | 1<<9, // hШ,
  293.     1<<5 | 1<<4 | 1<<19 | 1<<12 | 1<<1 | 1<<2, // iИ
  294.     1<<5 | 1<<8 | 1<<1 | 1<<6 | 1<<4 | 1<<9 | 1<<2, // old: 1<<16 | 1<<8 | 1<<12 | 1<<19 | 1<<9 | 1<<11, // jЖ
  295.     1<<5 | 1<<4 | 1<<14 | 1<<8 | 1<<9 | 1<<1 | 1<<2 | 1<<28 | 1<<29, // k_Ю
  296.     1<<4 | 1<<18 | 1<<28 | 1<<1 | 1<<2, // l  // old symmetric: 1<<4 | 1<<18 | 1<<10 | 1<<2, // l // old: 1<<19 | 1<<12 | 1<<1 | 1<<2, // lЛ
  297.     1<<5 | 1<<4 | 1<<3 | 1<<1 | 1<<2 | 1<<9 | 1<<21, // mЩ,
  298.     1<<4 | 1<<5 | 1<<0 | 1<<1 | 1<<2, // n
  299.     (1<<8 | 1<<9) | 1<<10 | 1<<18,  // 'o' for arrow up ^
  300.  
  301. };
  302.  
  303.  
  304. void game_font_init() {
  305.  
  306.     DEBUG30(":: font init start");
  307.  
  308.     float scale = 1.0;
  309.  
  310.     int seg;
  311.     int ch;
  312.     int ch_bit;
  313.  
  314. //  // FAT FONT #1 (OK)
  315. //    float scales[4] = { 0.4, 0.6, 0.2, 2 }; // 2,1,1,1
  316. //    float pows[4] = { 15.0, 19.0, 200.0, 22.0 };
  317. //    float ks1[4] = { 1.2, 1.0, 1.2, 0.90 }; // 0.75 straight
  318. //    float ks2[4] = { -1.0, -1.0, -1.0, -1.0 };
  319. //    float pows1[4] = { 1.0, 0.79, 1.0, 1.0 };
  320. //    float pows2[4] = { 1.0, 0.79, 1.0, 1.0 };
  321. //    float clamp1[4] = { 0.8, 0.75, 0.65, 0.87 }; // 0.8 to 0.86
  322. //    float clamp2[4] = { 0.85, 0.85, 0.85, 0.92 };
  323. //    float radiuses[4] = { 1.0, 1.1, 1.2, 0.87 };
  324.    
  325.    
  326.     float scales[4] = { 0.4, 0.6, 0.2, 2 }; // 2,1,1,1
  327.     //float pows[4] = { 45.0, 100.0, 200.0, 22.0 };
  328.     float pows[4] = { 15.0, 15.0, 15.0, 22.0 };
  329.     float ks1[4] = { 1.0, 1.2, 1.2, 0.90 }; // 0.75 straight
  330.     float ks2[4] = { -1.0, -1.0, -1.0, -1.0 };
  331.     float pows1[4] = { 1.3, 1.0, 1.0, 1.0 };
  332.     float pows2[4] = { 1.2,  0.9, 1.0, 1.0 };
  333.     float clamp1[4] = { 0.7, 0.79, 0.65, 0.87 }; // 0.8 to 0.86
  334.     float clamp2[4] = { 0.9, 0.85, 0.85, 0.92 };
  335.     float radiuses[4] = { 0.93, 0.93, 1.2, 0.87 };
  336.    
  337.     float colors_r[4] = { 1.0, 0.3, 1.0, 0.3 };
  338.     float colors_g[4] = { 1.0, 0.6, 1.0, 0.6 };
  339.     float colors_b[4] = { 1.0, 1.0, 1.0, 0.9 };
  340.     // 1: 0.5, 0.74, 0.79
  341.  
  342.     DEBUG20(":: font init label-a");
  343.  
  344.     int font_index = 0;
  345.     int font_index_color = 0;
  346.    
  347.     for (font_index_color = 0; font_index_color < FONTS_COUNT; font_index_color++) {
  348.            
  349.         font_index = font_index_color % 3;
  350.  
  351.         DEBUG30f(":: font init label-b (font index %d) \n", font_index);
  352.  
  353.         scale = scales[font_index];
  354.  
  355.         rs_gen_reg.cell_scale = scale;
  356.  
  357.         int char_tex_size = scale*32;
  358.        
  359. //        DEBUG10f("char_tex_size %d \n", char_tex_size);
  360.        
  361.         rs_gen_init(97, char_tex_size);
  362.  
  363.         for (seg = 0; seg < 32; seg++) {
  364.             rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], ks1[font_index], pows1[font_index], ks2[font_index], pows2[font_index], 0.0, 0.0);
  365.             //rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], 1.2, 1.0, -1.0, 1.0, 0.0, 0.0);
  366.             //rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], 0.48450032, 1.0, -1.0, 2.20, 0.0, 0.0); // toon
  367.             rs_gen_func_normalize(seg, 0.0, 1.0); // 0.1 to 1.0
  368.  
  369.             rs_gen_func_clamp(seg, clamp1[font_index], clamp2[font_index]); //  0.8, 0.86); // toon 0.775, 0.839889
  370.             rs_gen_func_normalize(seg, 0.0, 1.0); // 0.1 to 1.0
  371.  
  372.             rs_gen_func_set(96, 0.0);
  373.             rs_gen_func_radial(96, (float)pp_seg[8*seg + 4]/32.0, (float)pp_seg[8*seg + 5]/32.0, (float)pp_seg[8*seg + 6]/32.0*radiuses[font_index], 1.0, pows[font_index]);
  374.             rs_gen_func_mult(seg, seg, 96);
  375.         };
  376.  
  377.  
  378.  
  379.         for (ch = 0; ch < 64; ch++) {
  380.             rs_gen_func_set(32+ch, 0.0);
  381.             for (ch_bit = 0; ch_bit < 32; ch_bit++) {
  382.                 if ( (1<<ch_bit) & (ch_seg[ch]) ) {
  383.                     rs_gen_func_add_lerped(32+ch, 32+ch, ch_bit, 1.0, 1.0);
  384.                 }
  385.             }
  386.             rs_gen_func_clamp(32+ch, (ch+ch/8)%2 ? 0.0 : 0.0, 1.0);
  387.     //        rs_gen_func_set(32+ch, (ch+ch/8)%2 ? 0.5 : 0.0);
  388.    
  389.             rs_gen_tex_out_rgba_set(0.0, 0.0, 0.0, 0.0);
  390.             rs_gen_tex_out_rgba(32+ch, 32+ch, 32+ch, 32+ch, colors_b[font_index_color], colors_g[font_index_color], colors_r[font_index_color], 1.0);
  391.            
  392.             texture_init(&game.tex_font[font_index_color*64 + ch], char_tex_size, char_tex_size);
  393.             memcpy(game.tex_font[font_index_color*64 + ch].data, rs_gen_reg.tex_out, char_tex_size*char_tex_size*4 );
  394.    
  395.         }
  396.        
  397.        
  398.        
  399.         /*
  400.  
  401.         float *fontdata = malloc(256*scale*256*scale*4);
  402.  
  403.         int i, j, k;
  404.         for (i = 0; i < 8; i++) {
  405.             for (j = 0; j < 8; j++) {
  406.                 for (k = 0; k < 32*scale; k++) {
  407.                     memcpy( &(fontdata[i*256*(32*scale)*scale + k*256*scale + (j)*(32*scale)]), &(rs_gen_reg.tex[k*(32*scale) + (32+j+i*8)*(32*scale)*(32*scale)] ), 32*4*scale );
  408.                 };
  409.             };
  410.         };
  411.  
  412.         rs_gen_term();
  413.  
  414.         int font_tex_size = 256*scale;
  415.         rs_gen_init(2, font_tex_size);
  416.         memcpy( rs_gen_reg.tex, fontdata, 256*256 * 4 *scale*scale);
  417.         rs_gen_func_set(1, 1.0);
  418.         rs_gen_tex_out_rgba_set(0.0, 0.0, 0.0, 0.0);
  419.         rs_gen_tex_out_rgba(1, 1, 1, 0, 1.0, 1.0, 1.0, 1.0);
  420.        
  421.         //game.font_texture[font_index] = rs_tx_create_from_data(font_tex_size, font_tex_size, 4, 1, 0, rs_gen_reg.tex_out);
  422.         game_loader_create_texture( &(game.font_texture[font_index]), font_tex_size, font_tex_size, 4, 1, 0, rs_gen_reg.tex_out );
  423.        
  424.  
  425.         save_image(0, rs_gen_reg.tex_out, 256*scale, 256*scale, 4);
  426.        
  427.         */
  428.  
  429.         rs_gen_term();
  430.  
  431. //        free(fontdata);  
  432. //        
  433. //        game.loader_progress = font_index+2;
  434.  
  435.     };
  436.  
  437.     rs_gen_reg.cell_scale = 1;
  438.  
  439. };
  440.  
  441. void game_font_term() {
  442.  
  443.     int i;
  444.     for (i = 0; i < 64*FONTS_COUNT; i++) {
  445.         texture_free(&game.tex_font[i]);
  446.     };
  447.  
  448.  
  449. };
  450.  
  451. void game_textout_init(int set_to_ortho, int font_index) {
  452.    
  453. //    CHECK_GL("textout init: start");
  454. //
  455. //    glDisable(GL_DEPTH_TEST);
  456. //    CHECK_GL("textout init: disable depth test");
  457. //
  458. //    rs_sh_use(game.text_shader);
  459. //    CHECK_GL("textout init: use text shader");
  460. //    glBindTexture(GL_TEXTURE_2D, game.font_texture[font_index]);
  461. //    CHECK_GL("textout init: glBindTexture");
  462. //    glUniform1i( game.text_shader[RS_SH_SAMPLER0_ID], 0 );
  463. //    if (set_to_ortho) {
  464. //        rs_mx_ortho1h_proj();
  465. //    }
  466. //
  467. //    CHECK_GL("textout init: label d");
  468. //
  469. //    glUniformMatrix4fv( game.text_shader[RS_SH_PROJ_ID], 1, GL_FALSE, rs_reg.mx_proj );
  470. //
  471. //    CHECK_GL("textout init: label e");
  472. //
  473. //    glUniform4f( game.text_shader[RS_SH_COLOR_ID], 0.0, 0.0, 0.0, 0.0 );
  474. //
  475. //    CHECK_GL("textout init: end");
  476. };
  477.  
  478.  
  479.  
  480. float game_colors[4*7] = {
  481.     0.0, 0.0, 0.0, 1.0,
  482.     1.0, 1.0, 1.0, 1.0,
  483.     1.0, 0.9, 0.3, 1.0,
  484.     1.0, 0.4, 0.3, 1.0,
  485.     0.6, 0.8, 1.0, 1.0,
  486.     1.0, 0.8, 0.6, 1.0,
  487.     0.6, 0.6, 0.6, 0.9,
  488. };
  489.  
  490.  
  491.  
  492. void game_textout(int x, int y, int font_index, char* s) {
  493.     game_textout_adv(&game.framebuffer, x, y, font_index, DRAW_MODE_ALPHA, s);
  494. };
  495.  
  496. void game_textout_at_center(int x, int y, int font_index, char *s) {
  497.     x += (GAME_WIDTH - game.tex_font[font_index*64].w*strlen(s))/2;
  498.     game_textout_adv(&game.framebuffer, x, y, font_index, DRAW_MODE_ALPHA, s);
  499. };
  500.  
  501. void game_textout_adv(rs_texture_t *dest, int x, int y, int font_index, int draw_mode, char* s) {
  502. //void game_textout(int x, int y, int font_index, char* s) {
  503.    
  504.     int i = 0;
  505.     while (*s) {
  506.         if (*s != ' ') {
  507.             texture_draw(&game.framebuffer, &game.tex_font[ 64*font_index + ((*s - 48) % 64) ], x+i*game.tex_font[64*font_index+0].w, y, draw_mode);
  508.         };
  509.         s++;
  510.         i++;
  511.     };
  512.    
  513. //    for (i = 0; i < 8; i++) {
  514. //        texture_draw(&game.framebuffer, &game.tex_font[i], 40+8+game.tx+i*game.tex_font[i].w, 80+game.ty, DRAW_MODE_ALPHA);
  515. //    }
  516.    
  517.    
  518.  
  519. //    //char *s = "12345_QUICK_BROWN_FOX_JUMPS_OVER_A_LAZY_DOG";
  520. //
  521. //    float w = 2.0*h/3.0;
  522. //    int len = strlen(s);
  523. //
  524. //    x -= (float) align * 0.5 * len * w;
  525. //
  526. //    float sx = 0.0;
  527. //    float sy = 0.0;
  528. //
  529. //
  530. //
  531. //    int i;
  532. //    for (i = 0; i < len; i++) {
  533. //        unsigned char c = s[i];
  534. //
  535. //        if (c == '\n') {
  536. //            sx = 0.0;
  537. //            sy += h;
  538. //            continue;
  539. //        };
  540. //
  541. //        if (c == ' ') {
  542. //            sx += w;
  543. //            continue;
  544. //        };
  545. //
  546. //        c = (c-48)%64;
  547. //        float tx = 1.0 / 8.0 * (c % 8);
  548. //        float ty = 1.0 / 8.0 * (c / 8);
  549. //
  550. //        glUniform4fv( game.text_shader[RS_SH_SCALE_ID], 1, &(game_colors[4*0]) ); // black shadow
  551. //        glrsDrawRect_full(sx + x + h/12,
  552. //                          sy + y-h/2 + h/12,
  553. //                          sx + x + w + h/12,
  554. //                          sy + y+h/2 + h/12,
  555. //                          tx, ty, tx+1.0/8.0, ty+1.0/8.0,
  556. //                          game.text_shader[RS_SH_POS_ID], game.text_shader[RS_SH_UV_ID],
  557. //                          0.0, 0.0, 0.0 );
  558. //
  559. //        glUniform4fv( game.text_shader[RS_SH_SCALE_ID], 1, &(game_colors[4*color]) );
  560. ////        glUniform3f( game.text_shader[RS_SH_TIME_ID], 1.0, 1.0, 0.0 );
  561. //        glrsDrawRect_full(sx + x,
  562. //                          sy + y-h/2,
  563. //                          sx + x + w,
  564. //                          sy + y+h/2,
  565. //                          tx, ty, tx+1.0/8.0, ty+1.0/8.0,
  566. //                          game.text_shader[RS_SH_POS_ID], game.text_shader[RS_SH_UV_ID],
  567. //                          0.0, 0.0, 0.0 );
  568. //        sx += w;
  569. //    }
  570.  
  571. };
  572.  
  573.  
  574.