学习资料地址1:https://pan.baidu.com/s/13XjYIpnTsXteItmKx5NIxg 提取码: c821 学习资料地址2:https://share.weiyun.com/I2HekLPO 密码:b36r5s
OpenGL没有提供着色器编译器,而是由显卡驱动来完成着色器的编译工作,也就是说,只要显卡驱动支持对GLSL的编译它就能运行,所以能够跨平台。而DirectX是由微软控制着色器的编译,就算用了不同的硬件,同一个着色器的编译也是一样,所以支持的平台只有微软自己的产品。
GPU全称是GraphicProcessing Unit--图形处理器,其最大的作用就是进行各种绘制计算机图形所需的运算,包括顶点设置、光影、像素操作等。GPU实际上是一组图形函数的集合,而这些函数有硬件实现,只要用于3D游戏中物体移动时的坐标转换及光源处理。在很久以前,这些工作都是由CPU配合特定软件进行的,后来随着图像的复杂程度越来越高,单纯由CPU进行这项工作对于CPU的负荷远远超出了CPU的正常性能范围,这个时候就需要一个在图形处理过程中担当重任的角色,GPU也就是从那时起正式诞生了。
客户端程序需要调用OpenGL的接口实现3D渲染,那么OpenGL命令和数据会缓存在RAM中,在一定条件下,会将这些命令和数据通过CPU时钟发送到VRAM,在GPU的控制下,使用VRAM中的数据和命令,完成图形的渲染,并将结果存入帧缓冲区中,帧缓冲区中的帧最终会被发送到显示器上,显示出结果。
接下来,我们还需要使用automapper处理model与dto的自动映射。在Profile文件夹创建一个新profile文件,文件命名OrderProfile。class继承automapper的Profile,然后在构建函数中加入model到dto的映射关系。
[HttpPost("checkout")]
[Authorize(AuthenticationSchemes = "Bearer")]
public async Task
// 2 使用userid获得购物车
var shoppingCart = await _touristRouteRepository.GetShoppingCartByUserId(userId);
// 3 创建订单
var order = new Order()
{
Id = Guid.NewGuid(),
UserId = userId,
State = OrderStateEnum.Pending,
OrderItems = shoppingCart.ShoppingCartItems,
CreateDateUTC = DateTime.UtcNow,
};
shoppingCart.ShoppingCartItems = null;
// 4 保存数据
await _touristRouteRepository.AddOrderAsync(order);
await _touristRouteRepository.SaveAsync();
// 5 return
return Ok(_mapper.Map<OrderDto>(order));
} 在linkDto中,它包含了我们上节课说到的三个成员变量,herf,rel,以及method,然后,给linkdto加上构建函数,通过构建函数来初始化这三个变量。 public class LinkDto { public string Href { get; set; } public string Rel { get; set; } public string Method { get; set; }
public LinkDto(string href, string rel, string method)
{
Href = href;
Rel = rel;
Method = method;
}
}
全部链接添加完毕,我们就要可以返回响应了,响应数据就是links列表。现在,用户就可以通过访问这个api的根目录获得api的使用方法了。
[Route("api")]
[ApiController]
public class RootController: ControllerBase
{
[HttpGet(Name = "GetRoot")]
public IActionResult GetRoot()
{
var links = new List
// 自我链接
links.Add(
new LinkDto(
Url.Link("GetRoot", null),
"self",
"GET"
));
// 一级链接 旅游路线 “GET api/touristRoutes”
links.Add(
new LinkDto(
Url.Link("GetTouristRoutes", null),
"get_tourist_routes",
"GET"
));
// 一级链接 旅游路线 “POST api/touristRoutes”
links.Add(
new LinkDto(
Url.Link("CreateTouristRoute", null),
"create_tourist_route",
"POST"
));
// 一级链接 购物车 “GET api/orders”
links.Add(
new LinkDto(
Url.Link("GetShoppingCart", null),
"get_shopping_cart",
"GET"
));
// 一级链接 订单 “GET api/shoppingCart”
links.Add(
new LinkDto(
Url.Link("GetOrders", null),
"get_orders",
"GET"
));
return Ok(links);
}
}
既然找到问题所在,那么接下来,就让我们解决这个问题吧。请同学们打开starup文件,我们可以通过services对象访问mvc option对象,来配置自定义媒体类型。不过我们需要使用的是哪种格式处理器呢?请同学们把目光往下移一行,我们看到在这里添加了newtonjson formatter,这就是对josn数据的格式处理器, 所以我们可以通过拓展这个。第三方插件newtonjson 来实现的自定义媒体类型。
public static async Task<PaginationList
// include vs join
var items = await result.ToListAsync();
return new PaginationList<T>(totalCount, currentPage, pageSize, items);
}