当前位置: 首页 > wzjs >正文

上海集团网站建设价格想在百度做网站

上海集团网站建设价格,想在百度做网站,网站建设的业务规划,同性恋色做视频网站SDL 渲染器系统详解 SDL_Renderer 概述 SDL_Renderer 是 SDL 2.0 引入的核心渲染抽象,它提供了一种高效的、硬件加速的 2D 渲染方式,比传统的表面(Surface)操作更加高效和灵活。 主要函数 1. SDL_CreateRenderer - 创建渲染器 SDL_Renderer* SDL_Cr…

SDL 渲染器系统详解

SDL_Renderer 概述

SDL_Renderer 是 SDL 2.0 引入的核心渲染抽象,它提供了一种高效的、硬件加速的 2D 渲染方式,比传统的表面(Surface)操作更加高效和灵活。

主要函数

1. SDL_CreateRenderer - 创建渲染器

SDL_Renderer* SDL_CreateRenderer(SDL_Window* window,int index,Uint32 flags);

参数说明

  • window: 关联的窗口
  • index: 渲染驱动索引,通常设为-1让SDL自动选择
  • flags: 渲染器标志,常用组合:
    • SDL_RENDERER_ACCELERATED: 使用硬件加速
    • SDL_RENDERER_PRESENTVSYNC: 垂直同步
    • SDL_RENDERER_TARGETTEXTURE: 支持渲染到纹理

返回值:成功返回渲染器指针,失败返回NULL

示例

SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if(!renderer) {printf("创建渲染器失败: %s\n", SDL_GetError());
}

2. SDL_RenderCopy - 纹理复制

int SDL_RenderCopy(SDL_Renderer* renderer,SDL_Texture* texture,const SDL_Rect* srcrect,const SDL_Rect* dstrect);

参数说明

  • renderer: 目标渲染器
  • texture: 要复制的纹理
  • srcrect: 源矩形区域(NULL表示整个纹理)
  • dstrect: 目标矩形区域(NULL表示填充整个渲染目标)

返回值:成功返回0,失败返回负数

示例

// 复制整个纹理到整个窗口
SDL_RenderCopy(renderer, texture, NULL, NULL);// 复制纹理的一部分到指定位置
SDL_Rect src = {0, 0, 64, 64}; // 纹理左上角64x64区域
SDL_Rect dst = {100, 100, 128, 128}; // 放大到128x128
SDL_RenderCopy(renderer, texture, &src, &dst);

3. SDL_RenderPresent - 呈现渲染结果

void SDL_RenderPresent(SDL_Renderer* renderer);

功能

  • 将渲染缓冲区的内容显示到屏幕
  • 相当于SDL 1.2中的SDL_Flip
  • 如果创建渲染器时指定了SDL_RENDERER_PRESENTVSYNC,则会等待垂直同步

示例

// 渲染循环中
while(running) {// 清屏SDL_RenderClear(renderer);// 渲染各种对象...SDL_RenderCopy(renderer, texture1, NULL, &rect1);SDL_RenderCopy(renderer, texture2, NULL, &rect2);// 显示到屏幕SDL_RenderPresent(renderer);
}

完整工作流程示例

#include <SDL2/SDL.h>int main(int argc, char* argv[]) {SDL_Init(SDL_INIT_VIDEO);// 创建窗口SDL_Window* window = SDL_CreateWindow("Renderer Demo",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800, 600,SDL_WINDOW_SHOWN);// 创建渲染器SDL_Renderer* renderer = SDL_CreateRenderer(window, -1,SDL_RENDERER_ACCELERATED |SDL_RENDERER_PRESENTVSYNC);// 加载图像为纹理SDL_Surface* surface = SDL_LoadBMP("image.bmp");SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);SDL_FreeSurface(surface); // 表面不再需要// 主循环SDL_Event e;int running = 1;while(running) {// 事件处理while(SDL_PollEvent(&e)) {if(e.type == SDL_QUIT) running = 0;}// 清屏(填充黑色)SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);SDL_RenderClear(renderer);// 渲染纹理SDL_Rect dst = {100, 100, 200, 200};SDL_RenderCopy(renderer, texture, NULL, &dst);// 绘制一个红色矩形SDL_Rect rect = {300, 300, 100, 100};SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);SDL_RenderFillRect(renderer, &rect);// 显示到屏幕SDL_RenderPresent(renderer);}// 清理资源SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();return 0;
}

高级特性

1. 渲染目标(Render Target)

// 创建可渲染的纹理
SDL_Texture* target = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,512, 512);// 设置渲染目标
SDL_SetRenderTarget(renderer, target);// 渲染到纹理...
SDL_RenderCopy(renderer, otherTexture, NULL, NULL);// 重置渲染目标为默认(窗口)
SDL_SetRenderTarget(renderer, NULL);// 使用渲染好的纹理
SDL_RenderCopy(renderer, target, NULL, &dstRect);

2. 高级混合模式

// 设置混合模式
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);// 绘制半透明矩形
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 128); // 50%透明红色
SDL_RenderFillRect(renderer, &rect);

3. 纹理旋转和翻转

// 带旋转和翻转的复制
SDL_RenderCopyEx(renderer, texture, &src, &dst,45.0,  // 旋转角度(度)NULL,  // 旋转中心(NULL表示中心)SDL_FLIP_NONE); // 翻转标志

性能优化建议

  1. 纹理重用:避免频繁创建/销毁纹理
  2. 批处理渲染:合并多个RenderCopy调用
  3. 使用纹理图集:将多个小图像合并到一个大纹理
  4. 适当使用渲染目标:预渲染复杂场景
  5. 限制绘制区域:使用SDL_RenderSetViewport
  6. 选择合适的纹理格式:通常RGBA8888最通用

文章转载自:

http://BjugMr2G.hwzzq.cn
http://iMKbbRs0.hwzzq.cn
http://Ec0iTP7L.hwzzq.cn
http://lQ1J7Ztt.hwzzq.cn
http://dinfnnAS.hwzzq.cn
http://6KTkdjwp.hwzzq.cn
http://X0vhj5j8.hwzzq.cn
http://J31JooF4.hwzzq.cn
http://IIcCqNIB.hwzzq.cn
http://QSPuRrfs.hwzzq.cn
http://4xz8byr6.hwzzq.cn
http://Y9QnW4za.hwzzq.cn
http://SqA19lWc.hwzzq.cn
http://mzNIwZR9.hwzzq.cn
http://79AmKX6x.hwzzq.cn
http://UrNmSuv3.hwzzq.cn
http://zsdJLwYO.hwzzq.cn
http://I4Xyp17M.hwzzq.cn
http://2UON5GPh.hwzzq.cn
http://6WcVQGC7.hwzzq.cn
http://2fGCA0nB.hwzzq.cn
http://kCOG2Ltv.hwzzq.cn
http://NN9tqdKF.hwzzq.cn
http://Uecg9ooq.hwzzq.cn
http://1bd3GNuH.hwzzq.cn
http://ZxSptcEi.hwzzq.cn
http://kPhJ16iH.hwzzq.cn
http://KxTjqLsZ.hwzzq.cn
http://bp1OwBEd.hwzzq.cn
http://GeK5HHCZ.hwzzq.cn
http://www.dtcms.com/wzjs/637007.html

相关文章:

  • 官方网站的重要性中国门户网站排行
  • 网站开发经理岗位职责北京招聘网站开发
  • 濮阳建站公司哪个好网站开发流程有哪些
  • 建设网上银行官方网站官方网站开发公司排名
  • 网站建设首选沈阳高端网站建设做网站最简单的工具
  • 亚马逊网站开发设计家庭网络组网方案
  • 室内设计装修网站h5商城网站建站
  • 国内h5网站欣赏网站建设与维护 唐清安
  • 网站的黏度百度识图扫一扫
  • 宠物网站开发与实现网站建设的资料的准备
  • 网站 网页设计杭州房产网官方网站
  • 重庆购物网站建设装饰工程验收规范
  • 杭州专业网站建设潍坊网站制作发
  • 公司网站快速备案促销策划
  • 冠县网站建设公司公司注册要多少费用
  • 网站建设涉及的知识产权广州番禺地图全图
  • 有哪些可以做头像的网站肇庆市电商网站建设价格
  • 网站要多钱企业云平台
  • 创意家居网站建设与管理赣州人才网最新招聘
  • 我的企业网站怎么seo网页编辑器安卓版
  • 主题资源网站建设作业使用代理服务器后看什么网站
  • 做网站需要解析吗大型营销型网站建设
  • 南昌网站开发公司seo可以提升企业网站的
  • 阜阳市建设工程网站建筑网站的研究背景与意义
  • 茂名网站建设价格怎样汉化wordpress主题
  • 鞍山网站制作小程序网络运营怎么学
  • 页面简单的网站推广网站建设花费得多少钱
  • 网站制作上哪学校oppo软件商店手机版
  • 珠海网站建设策略哈尔滨75号公告
  • 安徽建设工程信息网新网站哪儿登陆wordpress payjs