[第2季]OpenGL-自主高性能三维GIS平台架构与实现

荀勗
• 阅读 125

学习资料地址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 Checkout() { // 1 获得当前用户 var userId = _httpContextAccessor .HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

// 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> CreateAsync( int currentPage, int pageSize, IQueryable result) { var totalCount = await result.CountAsync(); // pagination // skip var skip = (currentPage - 1) * pageSize; result = result.Skip(skip); // 以pagesize为标准显示一定量的数据 result = result.Take(pageSize);

// include vs join
var items = await result.ToListAsync();

return new PaginationList<T>(totalCount, currentPage, pageSize, items);

}

点赞
收藏
评论区
推荐文章
赵颜 赵颜
5个月前
首个基于Transformer的分割检测+视觉大模型视频课程(23年新课+源码+课件)
学习资料地址1:https://pan.baidu.com/s/1mpYHRFi68lzNuA8neYI15w提取码:pwjd学习资料地址2:https://share.weiyun.com/tnVNHGMD密码:3fj7iy自动驾驶是高安全型应用,需要高
荀勗 荀勗
5个月前
高性能多级网关与多级缓存架构落地实战(完结+附电子书)
参考资料地址1:https://pan.baidu.com/s/12w0TT26aywnoIcogPg8Uw提取码:uzf4参考资料地址2:https://share.weiyun.com/SNltUNLW密码:zi3dc7什么是网关?网关(Gateway
吉太 吉太
4个月前
[2023新版16章]SpringBoot+Vue3 项目实战,打造企业级在线办公系统
参考资料地址1:https://pan.baidu.com/s/1ZJGS0SA9pIUr76VUXioNSg提取码:95bd参考资料地址2:https://share.weiyun.com/jVSDdcBU密码:cruqf9SpringBootVue3
吉太 吉太
4个月前
OpenGL-自主高性能三维GIS平台架构与实现(第二季)
学习地址1:https://pan.baidu.com/s/1HsM5p56DosQgAgYDC9G26g提取码:rkeh学习地址2:https://share.weiyun.com/I2HekLPO密码:b36r5sOpenGL(OpenGraphics
笑面虎 笑面虎
4个月前
OpenGL-自主高性能三维GIS平台架构与实现(第2季)
OpenGL自主高性能三维GIS平台架构与实现(第2季)给大家分享一套课程——OpenGL自主高性能三维GIS平台架构与实现(第2季),附源码。大家下载学习。OpenGL(英语:OpenGraphicsLibrary,译名:开放图形库或者“开放式图形库”)
赵嬷嬷 赵嬷嬷
4个月前
[完结10章]Vue3+Pinia+Vite+TS 还原高性能外卖APP项目
参考资料地址1:https://pan.baidu.com/s/1u0uNBMkOA2NRk3N6myb4Zg提取码:tnlt参考资料地址2:https://share.weiyun.com/Wjw3QpeQ密码:gxrfcwVue3带来的改变,除了其自身
双寿 双寿
4个月前
大模型之最火Agent实战(打造你代理)教程
参考资料地址1:https://pan.baidu.com/s/1ymxhyeFjJX8DY3VeYJohg提取码:7k1q参考资料地址2:https://share.weiyun.com/olW8Mzf0密码:6bag56代理(Agent)指能自主感知环
吉太 吉太
1个月前
新版React18+Next.js14+Nest.js全栈开发复杂低代码项目[21章]
资料地址1:https://pan.baidu.com/s/1CpBiE0X4vq9dAoZZCow0bw提取码:wwq9资料地址2:https://share.weiyun.com/vXd3qr0O密码:bcrymy2024版,React18Nest.
鲍二家的 鲍二家的
1个月前
[完结17章]SpringBoot3+Vue3 开发高并发秒杀抢购系统
学习地址1:https://pan.baidu.com/s/1DRZXkQeGkrPwhVTd2ko00g提取码:gpwn学习地址2:https://share.weiyun.com/ysK13sR2密码:74m96t众所周知,作为开发新手,入行、实习、转
双寿 双寿
3星期前
从0到1落地微前端架构, MicroApp实战招聘网站(14章+电子书)
资料地址1:https://pan.baidu.com/s/1RDw4vTqKla93Dhvwg2TVQ提取码:db2n资料地址2:https://share.weiyun.com/xZzgNn8U密码:nwavm8一.什么是微前端“微前端架构”就是构建基