void shader_program::activate() { block_ = GPU_LoadShaderBlock(program_object_, "vert_vertex", "vert_texture_pos", "vert_draw_color", "model_view_proj"); GPU_ActivateShaderProgram(program_object_, &block_); //NOTE: this line can be removed once we made sure that a sane overlay // will be set before rendering anything. set_overlay(image::get_texture("misc/blank.png")); }
int main (int argc, char **argv){ struct v4l2_format format; int vfd; int stat; int overlay; if (argc!=6){ usage (argv[0]); return 1; } vfd = open (V4L2,O_RDWR); if (vfd<0){ perror ("error opening v4l2-device "); return 1; } set_overlay(vfd, atoi(argv[1]), atoi(argv[2]), atoi(argv[3]), atoi(argv[4])); format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY; stat = ioctl(vfd, VIDIOC_G_FMT, &format); // get format information if (stat<0){ perror ("error VIDIOC_G_FMT "); close (vfd); return 2; } printf ("output overlay set to x:%d y:%d width:%d height:%d\n", format.fmt.win.w.left, format.fmt.win.w.top, format.fmt.win.w.width, format.fmt.win.w.height); overlay=1; stat = ioctl(vfd, VIDIOC_OVERLAY, &overlay); // make overlay visible if (stat<0){ perror ("error VIDIOC_OVERLAY \"on\" "); close (vfd); return 2; } sleep (atoi(argv[5])); overlay=0; stat = ioctl(vfd, VIDIOC_OVERLAY, &overlay); // turn off overlay if (stat<0){ perror ("error VIDIOC_OVERLAY \"off\" "); close (vfd); return 2; } close (vfd); return 0; }