; docformat = 'rst' ;+ ; Example of texture mapping an image onto a non-rectangular polygon. ; ; :Keywords: ; renderer : in, optional, type=long ; set to 0 for hardware rendering, 1 for software rendering ;- pro mg_texturemap_demo, renderer=renderer compile_opt strictarr ; viewgroup needed to properly cleanup texture map image (since it is not ; part of the object graphics hierarchy it needs to be added to a viewgroup ; in order to be cleaned up when the graphics tree is freed) viewgroup = obj_new('IDLgrViewGroup') view = obj_new('IDLgrView') viewgroup->add, view model = obj_new('IDLgrModel') view->add, model f = filepath('people.jpg', subdir=['examples', 'data']) ali = read_image(f) texture = obj_new('IDLgrImage', ali) viewgroup->add, texture ; specify the pentagon in polar coords and then convert to rectangular r = fltarr(5) + 0.9 theta = (findgen(5) * 360 / 5 + 90.0) * !dtor xy = cv_coord(from_polar=transpose([[theta], [r]]), /to_rect) tcoords = [[0.5, 1.], [0.0, 1.0], [0.0, 0.0], [1.0, 0.0], [1.0, 1.0]] polygon = obj_new('IDLgrPolygon', xy, polygons=[5, 0, 1, 2, 3, 4], $ color=[255, 255, 255], $ texture_map=texture, texture_interp=1, $ texture_coord=tcoords) model->add, polygon win = obj_new('IDLgrWindow', dimensions=[400, 400], graphics_tree=viewgroup, $ renderer=renderer) win->draw end