# This file was automatically generated from renpy/gl/glrtt_copy.pyx # Modifications will be automatically overwritten. #@PydevCodeAnalysisIgnore #cython: profile=False # Copyright 2004-2019 Tom Rothamel # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. from __future__ import print_function from gl cimport * from gldraw cimport * from gldraw import Rtt class CopyRtt(Rtt): """ This class uses texture copying to implement Render-to-texture. """ def init(self): return def deinit(self): return def render(self, Environ environ, texture, x, y, w, h, draw_func): """ This function is called to trigger a rendering to a texture. `x`, `y`, `w`, and `h` specify the location and dimensions of the sub-image to render to the texture. `draw_func` is called to render the texture. """ environ.viewport(0, 0, w, h) environ.ortho(x, x + w, y, y + h, -1, 1) draw_func(x, y, w, h) glBindTexture(GL_TEXTURE_2D, texture) glCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, w, h) def end(self): """ This is called when a Render-to-texture session ends. """ def get_size_limit(self, dimension): return dimension