Lesson 9 View port

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在哪上傳文件):右鍵另存爲



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章