热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

包装opengl模型的最佳方法

如何解决《包装opengl模型的最佳方法》经验,为你挑选了1个好方法。

简而言之:为更高级别的"模型"对象包装OpenGL的缓冲区,着色器和/或矩阵的"首选"方法是什么?

我正在尝试用基于核心OpenGL 3.3的C++编写这个微小的图形引擎,我想实现一个尽可能干净的解决方案来包装更高级别的"模型"对象,该对象将包含其顶点缓冲区,全局位置/旋转,纹理(也可能是着色器?)和潜在的其他信息.

我已经研究过这个名为GamePlay3D的开源引擎,并不完全同意其解决这个问题的方方面面.是否有任何好的资源可以为现代OpenGL讨论这个主题?或者有一些简单而干净的方法来做到这一点?



1> Jerem..:

这很大程度上取决于您希望能够对您的引擎做什么.另请注意,这些概念与DirectX(或任何其他图形API)相同,因此不要过多关注OpenGL的搜索.以下是3D引擎中常见的几点(名称可能不同):

网格: 网格包含子网格,每个子网格包含一个顶点缓冲区和一个索引缓冲区.这个想法是每个子网格将使用不同的材质(例如,在角色的网格中,可能有一个身体的子网格和一个衣服的子网格.)

实例: 实例(或网格实例)引用网格,材质列表(网格中每个子网格一个),并包含"每个实例"着色器制服(世界矩阵等),通常分组在统一缓冲区中.

材料:(这部分根据发动机的复杂程度而变化很大).基本版本将包含一些纹理,一些渲染状态(混合状态,深度状态),着色器程序和一些所有实例共有的着色器制服(例如颜色,但也可能在实例中取决于什么你想做什么.)

更复杂的版本通常将传递中的材质(或者有时包含传递的技术)分开,其中包含前一段中的所有内容.您可以查看Ogre3D文档以获取更多信息,并查看一个可能的实现.还有一篇非常好的文章叫做GPU PRO 3中的Designing a Data-Driven Renderer,它描述了一个基于相同想法(但也更复杂)的更灵活的系统.

场景:(我把它称为场景,但它可以被称为任何东西).它提供了来自环境的着色器参数和纹理(光照值,环境贴图,这种东西).

我认为这是基础知识.考虑到这一点,如果您需要实现细节,您应该能够找到适合任何开源3D引擎代码的方法.


推荐阅读
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • OpenStackQ版本已经发布了一段时间了。今天,小编来总结一下OpenStackQ版本核心组件的各项主要新功能,再来汇总一下最近2年来OpenStackN、O、P、Q各版本核心 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • angular.element使用方法及总结
    2019独角兽企业重金招聘Python工程师标准在线查询:http:each.sinaapp.comangularapielement.html使用方法 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 1关于字符串相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起:str_catpython!str_cat输出:python!把很长 ... [详细]
  • 安装Tensorflow-GPU文档第一步:通过Anaconda安装python从这个链接https:www.anaconda.comdownload#window ... [详细]
author-avatar
文巧语
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有