SDL基础-4、渲染与文理(CB)

来源:互联网 发布:淘宝服装一件代发货源 编辑:程序博客网 时间:2024/06/05 21:11

前言

本篇描述SDL2中,渲染与纹理的使用,目的是去除闪屏效果。代码演示了一个随鼠标移动的图片。

代码

#include <stdbool.h>//使用bool类型#include <stdio.h>#include <stdlib.h>#include <SDL2/SDL.h>//引用SDL库#include <SDL2/SDL_image.h>//引用SDL_image库/*采用渲染、文理的模式,可以解决大型程序的闪屏问题*/int main(int argc,char* argv[]){    SDL_Init(SDL_INIT_VIDEO);    SDL_Window* window = SDL_CreateWindow("Tutorial",100,100,800,600,SDL_WINDOW_SHOWN);    SDL_Renderer* renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);//创建渲染    SDL_RenderClear(renderer);    SDL_Surface* OSueface = SDL_LoadBMP("O.bmp");    SDL_Texture* O        = SDL_CreateTextureFromSurface(renderer,OSueface);//创建文理    SDL_Rect rect;    rect.x = 0;    rect.y = 0;    rect.w = OSueface->w;//采用渲染,必须要设置长、宽    rect.h = OSueface->h;    SDL_Event event;    bool quit = false;//t跳出循环后执行quit(),确保资源的释放    while(quit == false)    {        while(SDL_PollEvent(&event))        {            if(event.type == SDL_QUIT)//退出事件            {                quit = true;            }            else if(event.type == SDL_MOUSEMOTION)//鼠标移动事件            {                rect.x = event.motion.x - rect.w/2;//设置贴图的起始坐标,起到鼠标定位于图片中心的效果                rect.y = event.motion.y - rect.h/2;                SDL_RenderClear(renderer);//清除                SDL_RenderCopy(renderer,O,NULL,&rect);//贴文理            }        }        SDL_Delay(5);//释放CPU,解决CPU占用过多的问题        SDL_RenderPresent(renderer);//刷新    }    SDL_FreeSurface(OSueface);    SDL_DestroyWindow(window);    SDL_Quit();    return 0;}
0 0
原创粉丝点击