用于OpenGL 1.1函数的wglGetProcAddress

时间:2011-08-06 12:30:52

标签: windows opengl

OpenGL网站上的这个wiki页面声称OpenGL 1.1函数不应该通过wglGetProcAddress加载,并且措辞似乎意味着如果你尝试的话,某些系统将按设计返回NULL:

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

(这个想法是只有1.2多个函数需要通过wglGetProcAddress加载)。

该页面没有告诉我们谁在1.1函数上报告了这些失败的wglGetProcAddress调用,这是我从未见过的。谷歌搜索旁边没有关于这个问题的信息。

对于足够多的用户来说,wglGetProcAddress()实际上会为1.1函数返回NULL,这样我才能真正关心吗?或者对于一些真正破坏GPU驱动程序的少数不幸用户来说,它是否会失败(在这种情况下我并不在乎)。

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

2 个答案:

答案 0 :(得分:2)

你应该问自己的问题是,这对你来说是否重要,是否应该关心。

手动加载OpenGL 1.1函数意味着您必须使用不同的函数名称,否则它们将与gl/gl.h中的声明冲突。或者,您必须定义GL_NO_PROTOTYPES,但在这种情况下,您不具备OpenGL 1.0功能。
所以,无论如何,这样做会意味着额外的麻烦,没有收获,你可以简单地使用1.1功能而不做任何事情。

话虽如此,我曾尝试过一次因为我认为动态加载所有是一个巧妙的想法(当我清醒过来时,我想知道是什么给了我这个想法),而我可以确认它(或至少在2年前没有)与nVidia司机一起工作 虽然,考虑到这一点,完全合理,甚至是好事,但没有意义的事情是行不通的。

答案 1 :(得分:1)

我在discussion page of that Wiki article上从技术上回答了这个问题,但是:

  

对于足够多的用户来说,wglGetProcAddress()实际上会为1.1函数返回NULL,这样我才能真正关心吗?

所有用户都将返回NULL。我在NVIDIA和ATI平台上试过它(最近的驱动程序和DX10硬件),所有这些都是这样做的。