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

我什么时候需要使用OpenGL函数加载器?

如何解决《我什么时候需要使用OpenGL函数加载器?》经验,为你挑选了1个好方法。

关于何时需要使用像GLEW这样的OpenGL函数加载器,我有点困惑.通常,您似乎首先获得一个窗口和有效的OpenGL上下文,然后尝试加载函数.

有时这些函数被称为扩展,有时它们也被称为核心函数.似乎加载并归类为"核心"和"扩展"的是依赖于平台的.除了一些基本集之外还加载了哪些函数?

您是否还需要在OpenGL ES平台上以相同的方式加载函数?快速浏览GLEW,我没有看到对Open GL ES的明确支持.其他GL函数加载器库明确提到了专门针对ES的支持(例如https://github.com/Dav1dde/glad)

datenwolf.. 14

只要有问题的函数不是平台原始OpenGL ABI(应用程序二进制接口)的一部分,就必须在运行时动态加载OpenGL函数(核心或扩展).

对于Windows,ABI涵盖的是OpenGL-1.1

对于Linux,ABI涵盖OpenGL-1.2(其他*nix没有正式的OpenGL ABI,但它们通常也需要OpenGL-1.2)

对于MacOS X,OpenGL版本可用,ABI由OS版本定义.

这导致以下规则:

在Windows中,除了单个纹理,无阴影,固定功能绘图外,你几乎需要一个功能加载器.有可能加载更多功能,但这不是给定的.

在Linux中,你需要一个几乎所有东西的函数加载器,除了基本的多纹理,只有基本的texenv模式,无阴影,固定功能绘图; 有可能加载更多功能,但这不是给定的.

在MacOS X中,您根本不需要功能加载器,但您可以使用的OpenGL功能严格取决于操作系统版本,您可以使用它,也可以不使用.

核心OpenGL函数和扩展之间的区别在于,核心函数可以在OpenGL规范中找到,而扩展是除了可用的OpenGL版本之外可能或可能不可用的功能.

扩展和较新版本的核心功能都通过相同的机制加载.



1> datenwolf..:

只要有问题的函数不是平台原始OpenGL ABI(应用程序二进制接口)的一部分,就必须在运行时动态加载OpenGL函数(核心或扩展).

对于Windows,ABI涵盖的是OpenGL-1.1

对于Linux,ABI涵盖OpenGL-1.2(其他*nix没有正式的OpenGL ABI,但它们通常也需要OpenGL-1.2)

对于MacOS X,OpenGL版本可用,ABI由OS版本定义.

这导致以下规则:

在Windows中,除了单个纹理,无阴影,固定功能绘图外,你几乎需要一个功能加载器.有可能加载更多功能,但这不是给定的.

在Linux中,你需要一个几乎所有东西的函数加载器,除了基本的多纹理,只有基本的texenv模式,无阴影,固定功能绘图; 有可能加载更多功能,但这不是给定的.

在MacOS X中,您根本不需要功能加载器,但您可以使用的OpenGL功能严格取决于操作系统版本,您可以使用它,也可以不使用.

核心OpenGL函数和扩展之间的区别在于,核心函数可以在OpenGL规范中找到,而扩展是除了可用的OpenGL版本之外可能或可能不可用的功能.

扩展和较新版本的核心功能都通过相同的机制加载.


@RetoKoradi:但是,平台SDK针对特定的操作系统版本.如果你是针对10.10构建的,那么你的软件只能在10.10+上运行,并且10.10的4.1实现的所有符号都将在链接时定义(虽然不一定在运行时实现).我认为这就是datenwolf的目标.
推荐阅读
  • scrcpy通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何ro ... [详细]
  • steam,2,7,2,已经,发布 ... [详细]
  • 这么多流媒体服务器?你怎么技术选型?
    在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别?下面就来探讨下常见的SFU开源解决方案,当然,你也可以自己实现SFU流媒体服务器 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • 安卓及谷歌官网不容易上,在此整理好下载地址,这样就可以直接用迅雷下载了。Eclipse最新Mars版Eclipse(暂时还没被墙)Mac版:http:www.eclipse.org ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • PL2303HXD电路图(USB转UART)介绍及应用
    本文介绍了PL2303HXD电路图(USB转UART)的特性和应用,该电路图可以实现RS232和USB信号的转换,方便嵌入到手持设备中。PL2303HXD作为USB/RS232双向转换器,可以将USB数据转换为RS232信息流格式发送给外设,并将RS232外设的数据转换为USB数据格式传送回主机。通过利用USB块传输模式和自动流量控制,PL2303HXD能够实现更高的数据传输吞吐量比传统的UART端口。 ... [详细]
  • macOS命令行创建Android模拟器
    macOS下不安装AndroidStudio使用VSCode来开发Flutter应用使用命令行创建和管理Android模拟器设备avdmanageravdmanager 是一种命令 ... [详细]
author-avatar
富农032884
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有