monitor calibration test block
parent
853659870b
commit
c18b773a01
|
@ -732,6 +732,10 @@ static GLuint circle25_texture = 0;
|
||||||
static GLuint circle125_texture = 0;
|
static GLuint circle125_texture = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#define CALIBRATION_SIDE 120
|
||||||
|
static GLuint calibration_texture = 0;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
opengl_render_init(void){
|
opengl_render_init(void){
|
||||||
//- setup basic shader program
|
//- setup basic shader program
|
||||||
|
@ -919,6 +923,50 @@ opengl_render_init(void){
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- calibration texture
|
||||||
|
{
|
||||||
|
U8 buf[CALIBRATION_SIDE*CALIBRATION_SIDE] = {0};
|
||||||
|
// checkerboards
|
||||||
|
for (U32 x = 0; x < (CALIBRATION_SIDE/2); x += 1){
|
||||||
|
for (U32 y = 0; y < (CALIBRATION_SIDE/2); y += 1){
|
||||||
|
B32 b = (((x + y)&1) == 1);
|
||||||
|
U8 c = b?255:0;
|
||||||
|
buf[x + y*CALIBRATION_SIDE] = c;
|
||||||
|
buf[x + (CALIBRATION_SIDE/2) + (y + (CALIBRATION_SIDE/2))*CALIBRATION_SIDE] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// (1/2) gray srgb
|
||||||
|
for (U32 x = 0; x < (CALIBRATION_SIDE/2); x += 1){
|
||||||
|
for (U32 y = 0; y < (CALIBRATION_SIDE/2); y += 1){
|
||||||
|
buf[x + (CALIBRATION_SIDE/2) + y*CALIBRATION_SIDE] = 128;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// (1/2) gray linear
|
||||||
|
for (U32 x = 0; x < (CALIBRATION_SIDE/2); x += 1){
|
||||||
|
for (U32 y = 0; y < (CALIBRATION_SIDE/2); y += 1){
|
||||||
|
buf[x + (y + (CALIBRATION_SIDE/2))*CALIBRATION_SIDE] = 186;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
U8 img[CALIBRATION_SIDE*CALIBRATION_SIDE*3] = {0};
|
||||||
|
for (U32 i = 0; i < CALIBRATION_SIDE*CALIBRATION_SIDE; i += 1){
|
||||||
|
U8 c = buf[i];
|
||||||
|
img[i*3 + 0] = c;
|
||||||
|
img[i*3 + 1] = c;
|
||||||
|
img[i*3 + 2] = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
glGenTextures(1, &calibration_texture);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, calibration_texture);
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, CALIBRATION_SIDE, CALIBRATION_SIDE, 0,
|
||||||
|
GL_RGB, GL_UNSIGNED_BYTE, img);
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
}
|
||||||
|
|
||||||
//- check for setup errors
|
//- check for setup errors
|
||||||
if (glGetError() != 0){
|
if (glGetError() != 0){
|
||||||
error_message("error in opengl renderer initialization");
|
error_message("error in opengl renderer initialization");
|
||||||
|
@ -1091,6 +1139,9 @@ WinMain(HINSTANCE hInstance,
|
||||||
F32 test7_y = graphics_h - 480.f;
|
F32 test7_y = graphics_h - 480.f;
|
||||||
F32 test8_y = graphics_h - 800.f;
|
F32 test8_y = graphics_h - 800.f;
|
||||||
|
|
||||||
|
F32 calib_y = graphics_h - 10.f;
|
||||||
|
F32 calib_x = 10.f;
|
||||||
|
|
||||||
// render to canvas frame buffer
|
// render to canvas frame buffer
|
||||||
{
|
{
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, canvas_framebuffer);
|
glBindFramebuffer(GL_FRAMEBUFFER, canvas_framebuffer);
|
||||||
|
@ -1593,6 +1644,31 @@ WinMain(HINSTANCE hInstance,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 9: color calibration blocks
|
||||||
|
if (test_idx == 0){
|
||||||
|
F32 y1 = calib_y;
|
||||||
|
F32 y0 = calib_y - CALIBRATION_SIDE;
|
||||||
|
F32 x0 = calib_x;
|
||||||
|
F32 x1 = calib_x + CALIBRATION_SIDE;
|
||||||
|
|
||||||
|
Vertex v[6];
|
||||||
|
v[0].px = x0; v[0].py = y0;
|
||||||
|
v[0].uvx = 0.f; v[0].uvy = 0.f;
|
||||||
|
v[1].px = x0; v[1].py = y1;
|
||||||
|
v[1].uvx = 0.f; v[1].uvy = 1.f;
|
||||||
|
v[2].px = x1; v[2].py = y0;
|
||||||
|
v[2].uvx = 1.f; v[2].uvy = 0.f;
|
||||||
|
v[3].px = x0; v[3].py = y1;
|
||||||
|
v[3].uvx = 0.f; v[3].uvy = 1.f;
|
||||||
|
v[4].px = x1; v[4].py = y0;
|
||||||
|
v[4].uvx = 1.f; v[4].uvy = 0.f;
|
||||||
|
v[5].px = x1; v[5].py = y1;
|
||||||
|
v[5].uvx = 1.f; v[5].uvy = 1.f;
|
||||||
|
|
||||||
|
opengl_draw_texture_geometry(v, 6, calibration_texture);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue