|
本帖最后由 ancientcc 于 2018-1-15 15:20 编辑
- int SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_Rect * dstrect, const double angle, const SDL_Point *center, const SDL_RendererFlip flip)
复制代码 复制部分参考SDL_RenderCopy,这里只说旋转,即angle、center参数。
左侧是原图,右侧是顺时针旋转90度后图像。底下两条语句是旋转时使用的代码。
把第二条语句中的角度从90换为-90,则结果是逆时针旋转90度。正如SDL_RenderCopyEx在帮助中写的,angle正数时表示顺时针,负数时表示逆时针。
和一些人想的不一样,center参数是和dest纹理相关,不是和src。
一直到现在,我还没彻底弄明白SDL_RenderCopyEx如何工作,以下是几个结论。
- 旋转前后,两个纹理的像素是一一对应,因而不会存在旋转后图像失真,也不会存在被削去。
- SDL只有一份顶点着色器代码,即GLES2_VertexSrc_Default_,或旋转或不旋转都在用它,因而和不旋转相比,旋转不会增加cpu、gpu开销。
- 如何填写dstrect参数?我的做法是先确定width、height,然后看效果,再决定如何填x、y。
|
|