Distributed unter the GPL
*/
+#include <msp/gl/extension.h>
#include <msp/gl/immediate.h>
#include <msp/gl/matrix.h>
#include <msp/gl/meshbuilder.h>
#include <msp/gl/misc.h>
-#include <msp/strings/formatter.h>
+#include <msp/strings/format.h>
#include <msp/time/units.h>
#include "history.h"
#include "netvis.h"
scale(1024),
mesh((GL::COLOR4_UBYTE, GL::TEXCOORD2, GL::VERTEX2))
{
- texture.storage(GL::RGBA, height, width, 0);
+ unsigned texw = height;
+ unsigned texh = width;
+ if(!GL::is_supported("ARB_texture_non_power_of_two"))
+ {
+ for(texw=1; texw<height; texw<<=1) ;
+ for(texh=1; texh<width; texh<<=1) ;
+ }
+ texture.storage(GL::RGBA, texw, texh);
+ texture.image(0, GL::RGBA, GL::UNSIGNED_BYTE, 0);
texture.set_min_filter(GL::LINEAR);
+ float wf = static_cast<float>(height)/texw;
+ float hf = static_cast<float>(width)/texh;
GL::MeshBuilder bld(mesh);
bld.color(1.0f, 1.0f, 1.0f);
bld.begin(GL::QUADS);
- bld.texcoord(0, 1);
+ bld.texcoord(0, hf);
bld.vertex(0, 0);
bld.texcoord(0, 0);
bld.vertex(width, 0);
- bld.texcoord(1, 0);
+ bld.texcoord(wf, 0);
bld.vertex(width, height);
- bld.texcoord(1, 1);
+ bld.texcoord(wf, hf);
bld.vertex(0, height);
bld.end();
}
value /= 1024;
suffix = 'M';
}
- GL::PushMatrix push_;
- GL::translate(width+5, height-10, 0);
- GL::scale_uniform(10);
- GL::Immediate imm((GL::COLOR4_UBYTE, GL::TEXCOORD2, GL::VERTEX2));
- imm.color(1.0f, 1.0f, 1.0f);
- netvis.get_font().draw_string(format("%d%c", value, suffix), imm);
- GL::translate(0, (height-12)*-0.05, 0);
- netvis.get_font().draw_string(format("%g%c", value*0.5, suffix), imm);
- GL::translate(0, (height-12)*-0.05, 0);
- netvis.get_font().draw_string(format("0%c", suffix), imm);
+ GL::MatrixStack::Push push_(GL::MatrixStack::modelview());
+ GL::MatrixStack::modelview() *= GL::Matrix::translation(width+5, height-10, 0);
+ GL::MatrixStack::modelview() *= GL::Matrix::scaling(10);
+ netvis.get_font().draw_string(format("%d%c", value, suffix));
+ GL::MatrixStack::modelview() *= GL::Matrix::translation(0, (height-12)*-0.05, 0);
+ netvis.get_font().draw_string(format("%g%c", value*0.5, suffix));
+ GL::MatrixStack::modelview() *= GL::Matrix::translation(0, (height-12)*-0.05, 0);
+ netvis.get_font().draw_string(format("0%c", suffix));
GL::Texture::unbind();
}
up_min = min(value+1, up_min);
up_max = max(value, up_max);
}
- unsigned *row = &data[y*100];
- for(unsigned x=0; x<100; ++x)
+ unsigned *row = &data[y*height];
+ for(unsigned x=0; x<height; ++x)
{
if(x>=up_min && x<=up_max)
row[x] = 0xFF8000FF;
else if(x<=down)
row[x] = 0xFF80FF80;
- else if(x%25==24 || y%60==0)
+ else if((x*4+4)%height==0 || y%60==0)
row[x] = 0x40FFFFFF;
else
row[x] = 0x00000000;
}
}
- texture.image(0, GL::RGBA, GL::UNSIGNED_BYTE, data.data());
+ texture.sub_image(0, 0, 0, height, width, GL::RGBA, GL::UNSIGNED_BYTE, data.data());
}