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在哪上传文件):右键另存为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值