wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – glext.h的问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

当我找到 something that now has me scared to use glext.h时,我只是在浏览OS X Lion上的OpenGL更新. 所以,这是错误. Lion的OpenGL.framework有一个glext.h,其定义如下. typedef void *GLhandleARB; 但是来自OpenGL注册表的glext.h具有以下内容. typedef unsigne
当我找到 something that now has me scared to use glext.h时,我只是在浏览OS X Lion上的OpenGL更新.

所以,这是错误. Lion的OpenGL.framework有一个glext.h,其定义如下.

typedef void *GLhandleARB;

但是来自OpenGL注册表的glext.h具有以下内容.

typedef unsigned int GLhandleARB;

现在,问题是当在Lion上构建x86_64时,我们有sizeof(void *)== 8,但sizeof(unsigned int)== 4.那么你信任什么?狮子头?还是OpenGL注册表的标题?嗯,当然你信任系统头,因为显然他们声称知道64位Lion上的ABI有64位GLhandleARB类型.

现在,这引发了一些关于各种平台的问题:

>如果你必须使用Apple的glext.h,但Apple的glext.h不提供访问OpenGL 2.1之后的任何内容,那么你如何获得更新卡上的3.0功能呢?
>在Linux上使用OpenGL注册表的glext.h是不安全的吗?或者你必须在那里使用系统的glext.h吗?在这种情况下,问题#1也适用于此.
>你如何处理Windows上的东西,系统上从来没有glext.h?你显然不能使用驱动程序供应商的glext.h,因为不同的供应商可能不同意各种类型的大小. (或者这不是真的吗?)这里的交易是什么?

解决方法

我觉得没问题.
只需使用OS /驱动程序提供的标题.
或者更好地使用多平台OpenGL扩展加载器,这将为您提供帮助.
(例如 GLEW)

另一方面,在代码中你将只使用GLhandleARB,而不是其他东西,所以在Mac上它将是无效的* – 没问题,在Linux上 – 不同的东西 – 没有问题,在带有AMD标题的Linux上 – 完全不同的东西 – 没问题.

代码可以跨不同平台移植,而不是二进制文件,因此我认为这里没有问题.

1)如果您使用Apple提供的版本,则无法获得更好的OpenGL.所以目前你可以在10.7上获得最大的OpenGL 3.2核心配置文件. (听说Nvidia在某些gpus上使用自己的标题用OpenGL 3.3绕过它,但是我自己无法检查它).

2)这取决于.如果你的目标是OpenGL 2.1及以下,开源驱动程序支持它,但只有专有驱动程序支持更高版本,所以你应该使用它们的标题.
但是在代码中你只需要输入“#include”,然后链接到适当的标题.so库.

3)不知道Win上的情况如何.但是供应商可能会使用OpenGL注册表中的glext.

但所有这些都是基于错误的假设.你不必知道他们的答案.只需使用已经知道如何处理这种负担的软件. (例如,GLEW).

大佬总结

以上是大佬教程为你收集整理的windows – glext.h的问题全部内容,希望文章能够帮你解决windows – glext.h的问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: