Lesson 8 幾何渲染

幾何渲染


隨着新的 texture API, SDL使用 rending API來實現原始的呈現方式,如果你需要呈現一些基本的圖形但不想創建它,SDL可以節省你的精力

bool loadMedia(){
    bool success = true;
    return success;
}

你可以看見在我們的媒體加載函數函數中,我們沒有加載任何媒體,SDL的原始呈現允許你不需要加載特殊的圖形來顯示形狀

else{
       bool quit = false;
       SDL_Event e;
       while(!quit){
           while(SDL_PollEvent(&e)){
                if(e.type == SDL_QUIT){
                    quit = true;
                }
            }
       //clear screen
       SDL_SetRenderDrawColor(gRenderer, 0xFF, 0xFF, 0xFF, 0xFF);
       SDL_RenderClear(gRenderer);

像以前一樣我們在主循環頂部設置退出事件標誌同時清屏。還要注意的是,我們使用SDL_SetRenderDrawColor來設置清屏的顏色爲白色。在每一幀中都進行設置,而不是隻在初始化函數中設置一遍,我們將討論這種情況爲什麼發生在主循環的末尾
//顯示紅色
SDL_Rect fillRect = {SCREEN_WIDTH/4, SCREEN_HEIGHT/4, SCREEN_WIDTH/2, SCREEN_HEIGHT/2};
SDL_SetRenderDrawColor(gRenderer, 0xFF, 0x00, 0x00, 0xFF);
SDL_RenderFillRect(gRenderer, &fillRect);
第一個原始圖形我們繪製一個矩形,這是一個立體的矩形
首先我們設置一個需要填充顏色的矩形區域,如果你從來沒有見過這樣的結構體初始化,現在SDL_Rect 矩形成員變量x, y, w, h。x,y 表示左上角
的座標位置, w, h表示矩形的寬度和高度。可以通過一個有序的數組來初始化一個結構體。這裏我們設置 x是窗口寬度的 1/4, y爲窗口高度的 1/4。
w 爲窗口寬度額 1/2, h 爲窗口高度的 1/2。
定義矩形區域後,我們通過 SDL_SetRenderDrawColor 來設置填充顏色,在函數接受的渲染器窗口中我們使用 RGBA 值,R表示紅色,G表示綠色,
B表示藍色,A 表示透明度。在這裏 SDL_SetRenderDrawColor來繪製顏色不透明的紅色。
設置矩形和顏色後,SDL_RenderFillRect來繪製矩形
//顯示綠色方框
SDL_Rect outlineRect = {SCREEN_WIDTH/6, SCREEN_HEIGHT/6,
SCREEN_WIDTH*2/3, SCREEN_HEIGHT*2/3};
SDL_SetRenderDrawColor(gRenderer, 0x00, 0xFF, 0x00, 0xFF);
SDL_RenderDrawRect(gRenderer, &outlineRect);
使用 SDL_RenderDrawRect 來繪製空心矩形,正如你所看到的,和填充矩形的代碼幾乎差不多,不過現在繪製的這個矩形的顏色爲綠色,大小爲窗口屏幕的 2/3

如果你設置矩形的位置,你可能 會注意到一些奇怪的 y座標。增大y座標使圖形的位置下降,減小y座標使圖形的位置上升。這是因爲SDL和許多texture api使用不同的座標系

代數課上的笛卡兒座標系統


在x軸指向右邊,y軸點,原點在左下角。
SDL使用一個不同的座標系統

所以當我們繪製矩形是的座標系統功能如下

//繪製藍色直線
SDL_SetRenderDrawColor(gRenderer, 0x00, 0x00, 0xFF, 0xFF);
SDL_RenderDrawLine(gRenderer, 0, SCREEN_HEIGHT/2, SCREEN_WIDTH, SCREEN_HEIGHT/2);

SDL_RenderDrawLine用來繪製一個細線,首先我們將顏色設置爲藍色,設置起始的 x/y位置,然後設置結束的x/y位置,最後就能繪製水平的直線

//用黃點繪製垂直線
SDL_SetRenderDrawColor(gRenderer, 0xFF, 0xFF, 0x00, 0xFF);
for(int i = 0; i < SCREEN_HEIGHT; i++){
     SDL_RenderDrawPoint(gRenderer, SCREEN_WIDTH/2, i);
}
SDL_RenderPresent(gRenderer);

幾何學的最後一點,我們使用 SDL_RenderDrawPoint來繪製一個點,我們只是從上到下繪製一組點,在繪製完所有幾何圖形後,我們更新屏幕。

程序的完整代碼和媒體文件下載地址(這個二維碼是我博客的地址,修改圖片後綴爲 .rar就可以解壓,因爲我不知道csdn在哪上傳文件):右鍵另存爲

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