dxkite吧 关注:223贴子:3,168
  • 4回复贴,共1

SDL2教程 第二课

只看楼主收藏回复

/*DXkite
*SDL2教程第二课
*加载图片,实现缩放
*2014-5-30
*函数查询入口
*Google翻译版:http://translate.googleusercontent.com/translate_c?depth=1&ie=UTF8&nv=1&rurl=translate.google.com&sl=auto&tl=zh-CN&u=http://wiki.libsdl.org/FrontPage&usg=ALkJrhh9G_mTkBBfX17kq2QRkH0LwCVu-g
*英文版:http://wiki.libsdl.org/FrontPage
*建议对照来看
*/
#include "SDL2/SDL.h"
#include<string>
using std::string;
string Root = "/mnt/sdcard/";
// 窗口
SDL_Window *Window = nullptr;
// 渲染器
SDL_Renderer *Render = nullptr;
// 画笔
SDL_Texture *hello = nullptr;
SDL_Texture *background = nullptr;
int Init()
{
/* 参数说明 *标题,位置信息(x,y,w,h),窗体模式标记 */
Window =
SDL_CreateWindow("SDL2 第二课 DXkite", 0, 0, 480, 600,
SDL_WINDOW_FULLSCREEN);
/* 参数说明 *窗体,渲染器索引(-1为默认),模式标记 */
Render = SDL_CreateRenderer(Window, -1, SDL_RENDERER_ACCELERATED);
if ((Render == nullptr) || (Window == nullptr))
return -1;
return 0;
}
int LoadBmp()
{
SDL_Surface *temp = nullptr;
temp = SDL_LoadBMP((Root + "hello.bmp").c_str());
/* 从名字就可以看出来是干嘛的 */ hello =
SDL_CreateTextureFromSurface(Render, temp);
SDL_FreeSurface(temp);
temp = SDL_LoadBMP((Root + "background.bmp").c_str());
background = SDL_CreateTextureFromSurface(Render, temp);
SDL_FreeSurface(temp);
if ((background == nullptr) || (hello == nullptr))
return -1;
return 0;
}
int BiltTexture(int x, int y, int w, int h, SDL_Texture * Draw_Texture,
SDL_Renderer * Draw_Render)
{
// 竟然支持缩放
// 唉,技术不行,
SDL_Rect Draw_Render_Rect;
Draw_Render_Rect.x = x;
Draw_Render_Rect.y = y;
Draw_Render_Rect.w = w;
Draw_Render_Rect.h = h;
SDL_RenderCopy(Draw_Render, Draw_Texture, NULL, &Draw_Render_Rect);
}
int DestroyAll()
{
SDL_DestroyTexture(hello);
SDL_DestroyTexture(background);
SDL_DestroyRenderer(Render);
SDL_DestroyWindow(Window);
}
int main(int argc, char *argv[])
{
//初始化SDL2(为了省事初始化了全部)
SDL_Init(SDL_INIT_EVERYTHING);
//初始化
if ((Init() == -1) || (LoadBmp() == -1))
SDL_Quit();
//画图
BiltTexture(0, 0, 400, 400, background, Render);
BiltTexture(50, 50, 50, 50, hello, Render);
// 刷新(不刷新,等着黑屏)
SDL_RenderPresent(Render);
DestroyAll();
SDL_Delay(2 * 1000);
SDL_Quit();
}
//@ll我爱你_ @疯人院的女孩 @TTHHR @啊o额iu鱼


IP属地:广东来自Android客户端1楼2014-05-30 19:22回复
    这是2.0哎


    IP属地:江苏来自Android客户端2楼2014-05-30 20:06
    收起回复
      额额,留名……


      IP属地:广东来自Android客户端3楼2014-05-30 22:44
      回复
        诶诶!这个好


        来自手机贴吧4楼2014-08-22 07:20
        回复