用于 OpenGL 1.1 函数的 wglGetProcAddress

问题描述 投票:0回答:2

OpenGL 网站上的这个 wiki 页面声称不应通过

wglGetProcAddress()
加载 OpenGL 1.1 函数,并且该措辞似乎暗示如果您尝试,某些系统将按设计返回
NULL

http://www.opengl.org/wiki/Platform_specifics:_Windows#wglGetProcAddress

(这个想法是只有 1.2+ 的函数才值得通过

wglGetProcAddress()
的方式加载)。

该页面没有告诉我们谁报告了这些对 1.1 函数失败的

wglGetProcAddress()
调用,这是我个人从未见过的。谷歌搜索也几乎没有关于这个问题的信息。

wglGetProcAddress()
实际上会为足够多的用户返回
NULL
1.1 功能吗?这样我应该真正关心吗?或者它只是对少数不幸的用户来说失败了,他们的 GPU 驱动程序确实损坏了(在这种情况下我不太关心)。

还有其他人遇到过这个吗?

windows winapi opengl
2个回答
3
投票

您应该问自己的问题是这对您是否重要以及您是否应该关心。

手动加载 OpenGL 1.1 函数意味着您必须使用不同的函数名称,否则它们将与

gl/gl.h
中的声明发生冲突。或者,您必须定义
GL_NO_PROTOTYPES
,但在这种情况下,您将 不具备 OpenGL 1.0 功能。
所以,无论如何,这样做都意味着额外的麻烦,没有任何收获,你可以简单地使用 1.1 的功能,而不需要做任何事情。

话虽如此,我已经尝试过一次,因为我认为动态加载所有内容将是一个巧妙的想法(当我清醒过来时,我想知道是什么给了我这个想法),而且我可以确认它没有(或者至少,2 年前没有)与 nVidia 驱动程序一起工作。
不过,仔细想想,这是完全合理的,甚至是一件好事,没有意义的东西不起作用。


1
投票

我在 Wiki 文章的讨论页面上技术性地回答了这个问题,但是:

wglGetProcAddress() 实际上会为足够多的用户返回 NULL 1.1 函数,这样我应该真正关心吗?

它将为

all用户返回NULL。我已经在 NVIDIA 和 ATI 平台上尝试过(最新的驱动程序和 DX10 硬件),并且都可以。

© www.soinside.com 2019 - 2024. All rights reserved.