Viewport
有時候你只是想 呈現部分屏幕,小地圖之類的東西,使用 viewport(視窗)控制來呈現在屏幕上
//窗口左上角 Top left corner view port
SDL_Rect topLeftViewport;
topLeftViewport.x = 0;
topLeftViewport.y = 0;
topLeftViewport.w = SCREEN_WIDTH/2;
topLeftViewport.h = SCREEN_HEIGHT/2;
SDL_RenderSetViewport(gRenderer, &topLeftViewport);
//Render texture to screen
SDL_RenderCopy(gRenderer,gTexture,nullptr,nullptr);
當我們清空屏幕以後,現在就可以進行繪製了,在窗口上的三個區域繪製完整的圖像
首先我們要在左上角顯示,使用SDL_RenderSetViewPort來創建一個高度/寬度只有屏幕一半的矩形。在完成渲染之後,調用內部定義的視窗,他使用窗口的座標系創建。窗口底部設置的的y 值仍然是480 pixel,即使從上往下有 240 個像素
//Top left corner view port
SDL_Rect topRightViewport;
topRightViewport.x = SCREEN_WIDTH/2;
topRightViewport.y = 0;
topRightViewport.w = SCREEN_WIDTH/2;
topRightViewport.h = SCREEN_HEIGHT/2;
SDL_RenderSetViewport(gRenderer, &topRightViewport);
//Render texture to screen
SDL_RenderCopy(gRenderer,gTexture,nullptr,nullptr);
這裏我們定義右上角區域和畫,和以前差不多,只是現在x座標是屏幕的一半//Top left corner view port
SDL_Rect bottomViewport;
bottomViewport.x = 0;
bottomViewport.y = SCREEN_HEIGHT/2;
bottomViewport.w = SCREEN_WIDTH;
bottomViewport.h = SCREEN_HEIGHT/2;
SDL_RenderSetViewport(gRenderer, &bottomViewport);
//Render texture to screen
SDL_RenderCopy(gRenderer,gTexture,nullptr,nullptr);
//update screen更新屏幕
SDL_RenderPresent(gRenderer);
最後,我們呈現在屏幕底部的一半顯示,圖像的顯示會被壓扁程序的完整代碼和媒體文件下載地址(這個二維碼是我博客的地址,修改圖片後綴爲 .rar就可以解壓,因爲我不知道csdn在哪上傳文件):右鍵另存爲