void fdrawcheckerboard(float x1, float y1, float x2, float y2) { unsigned char col1[4] = {40, 40, 40}, col2[4] = {50, 50, 50}; glColor3ubv(col1); glRectf(x1, y1, x2, y2); glColor3ubv(col2); GPU_basic_shader_bind(GPU_SHADER_STIPPLE | GPU_SHADER_USE_COLOR); GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_CHECKER_8PX); glRectf(x1, y1, x2, y2); GPU_basic_shader_bind(GPU_SHADER_USE_COLOR); }
static void wm_method_draw_stereo3d_interlace(wmWindow *win) { wmDrawData *drawdata; int view; bool flag; bool swap = (win->stereo3d_format->flag & S3D_INTERLACE_SWAP) != 0; enum eStereo3dInterlaceType interlace_type = win->stereo3d_format->interlace_type; for (view = 0; view < 2; view ++) { flag = swap ? !view : view; drawdata = BLI_findlink(&win->drawdata, (view * 2) + 1); GPU_basic_shader_bind(GPU_SHADER_STIPPLE); switch (interlace_type) { case S3D_INTERLACE_ROW: if (flag) GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW_SWAP); else GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW); break; case S3D_INTERLACE_COLUMN: if (flag) GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN_SWAP); else GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN); break; case S3D_INTERLACE_CHECKERBOARD: default: if (flag) GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER_SWAP); else GPU_basic_shader_stipple(GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER); break; } wm_triple_draw_textures(win, drawdata->triple, 1.0f, true); GPU_basic_shader_bind(GPU_SHADER_USE_COLOR); } interlace_prev_type = interlace_type; interlace_prev_swap = swap; }