几何渲染
随着新的 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在哪上传文件):右键另存为