问题标签 [glload]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
687 浏览

visual-studio-2010 - VC++ EE 2010 中的 glload 和 LNK 错误

我正在尝试使用非官方 OpenGL SDK 中的 glload,但出现 LNK 错误:


链接器/附加依赖项:glloadD.lib 问题出在哪里?

编辑1:

首先我使用 Premake 为 vs2010 生成构建文件。然后我建立了所有的图书馆。在我的项目中,我为这些库设置了附加包含目录、附加库目录和附加依赖项。我想从这个页面运行一个示例:链接,但我忘记在加载 opengl 函数之前创建 OpenGL 上下文。我在这个项目中不需要窗口,所以我只调用 glutInit,但在 0x5bfed398 (msvcr100d.dll) 处出现未处理的异常

编辑2:

在 glload::LoadFunctions 之前调用 glutCreateWindow 似乎是必要的。以下代码有效:

0 投票
1 回答
1383 浏览

opengl - OpenGL - glload 未定义的对 `wglGetProcAddress@4' 的引用

我下载了非官方的 OpenGL SDK并使用 premake4 创建了 Makefile 并使用 mingw 4.8.4 编译它。

我也在使用 QtCreator

这是我的 .pro 文件

我也在关注 arcsynthesis openGL 教程并尝试构建“你好三角形示例”:

但我总是收到以下错误。

c:\glsdk\glload\source\wgll_ext.c:140: 错误: 未定义对 `wglGetProcAddress@4' 的引用

我什至不知道为什么它会出现在 glload\source 文件夹中。

有任何想法吗?

0 投票
4 回答
10138 浏览

c++ - C++ 符号在共享对象中具有不同的大小

我一直在研究一个跨平台的窗口库,专门用于 OpenGL,目前专注于 linux。我正在使用 glload 来管理 OpenGL 扩展,并且正在将其与我稍后将使用的其他库一起编译为.so. 正如您所期望的那样,这个 `.so 正在动态加载,但在运行时程序会提供以下输出(手动包装,因此更易于阅读):

现在,显然我已经尝试过重新链接,甚至多次重建整个项目(测试一下,而不是盲目地希望它会神奇地让一切变得更好)。该程序似乎确实愿意运行,因为它会产生一些我期望的日志输出。我曾经nm确认“符号”在.so

如果我readelf用来查看正在定义的符号,我会得到以下信息(同样,为了格式化,我手动包装了前三行):

恐怕这就是我能提供的所有帮助,因为我真的不知道该尝试或研究什么。就像我说的,我确信需要更多信息,所以请说我会提供我能提供的。我正在从我的项目根目录运行这些命令,以防您想知道。

0 投票
1 回答
372 浏览

c++ - GLM 是否与 GLload 和 GCC 兼容

我目前正在设置我的 OpenGL“框架”,并已决定使用 GLload,主要用于扩展加载,但它具有证明正确的“gl”名称空间的额外好处。因此,所有 gl* 函数都用作 gl::* 例如:

我还想使用 glm,根据我的理解,它应该像 include 一样简单,glm/glm.hpp并确保我告诉我的编译器在哪里可以找到它。但似乎它可能与 glload 不直接兼容,因为当我尝试使用它进行编译时出现以下错误。

通过查看type_int.hpp您可以看到它使用宏,首先分别使用'signed long'和'unsigned long',然后使用'highp_int_t'和'highp_uint_t'(导致此错误)。这两个重新定义的类型是“int64”和“uint64”,具体类型取决于编译器。当我使用 GCC 时,我相信这意味着我应该将这些类型视为 'signed long long' 和 'usigned long long'。

如果我注释掉这两行,一切似乎都编译得很好。当然,我相信迟早会证明我这样做会破坏某些东西。

查找类似的问题让我得到了这个答案,基本上说 glm 不支持用 构建-std=C++11,这对我来说是不可接受的;但是这个答案已经有将近两年的历史了,glm 的网站确实声称完全兼容 C++11。

作为参考,我正在使用 gcc 4.7.3 版、glm 0.9.5 版(从 gi​​thub 存储库中提取)、 glsdk 0.4.4 版的 glload(我已经删除了 glsdk 的所有其他“模块”,留下了我只是glload)。

0 投票
1 回答
958 浏览

opengl - GLSDK 打破了easylogging++

我正在启动一个 OpenGL 引擎,使用 SFML 作为上下文和输入管理器,使用 GLSDK 来加载 OpenGL(以及现在不重要的图像和东西),并使用 Boost 来处理其他一些事情。

我一直在想“记录”的想法,并尝试了 Boost.Log(未能编译一个示例,并且对该问题的唯一引用未解决),Log4CPP(在启动时出现错误),最后一切似乎都是easylogging++ 很好,它是一个只有头文件的库(好样的!),它有一些简洁的语法 IMO。

但它在编译时给出了一堆错误:

  • C2664: 'el::base::utils::DateTime::gettimeofday' : 无法将参数 1 从 'int *' 转换为 'el::base::utils::timeval *'

  • C2228: '.tv_usec' 的左边必须有类/结构/联合

  • C2227:“->tv_usec”左侧必须指向类/结构/联合/通用类型
  • C2079:“currTime”使用未定义的结构“el::base::utils::timeval”
  • C2027:使用未定义类型 'el::base::utils::timeval'
  • 还有一些

我已经以这种方式实现了它:

  • 'helpers.Log.hpp':pragma once,包括 'easylogging++.h' 并定义命名空间助手 > 命名空间日志 > void function init()。
  • 'helpers.Log.cpp': '_INITIALIZE_EASYLOGGINGPP' 并实现 init() 如下:

    /li>

现在,只有这两个文件处理 logging。“engine.Core.hpp”包括“helpers.Log.hpp”、“engine.Boot.hpp”(现在为空白)、“glload/gl_load.hpp”、“glload/gl_3_3.hpp”以及在核心类,在引擎命名空间内,调用了 init() 函数。

在整个应用程序中没有做任何其他事情。就是这样,日志系统的初始化,但它完全失败了。

系统信息

操作系统:Windows 7 x64

IDE:Visual Studio 2012

编译器: VS2012 (v110)

编译命令:cl /c /IF:/BTSync/prog_projs/KINGDOMS/trunk/inc /IF:/dev/SFML/21/include /IF:/dev/GLSDK/052/glload/include /IF:/dev/GLSDK /052/glutil/include /IF:/dev/GLSDK/052/glm /IF:/dev/GLSDK/052/glmesh/include /IF:/dev/GLSDK/052/glimage/include /IF:/dev/BOOST /154 /IF:/DEV/LIBROCKET/121_3/include /Zi /nologo- /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /GR /Fo"KINGDOMS_0_1.dir\Debug\" /Fd"F:/BTSync/prog_projs/KINGDOMS/ trunk/pro/Debug/KINGDOMS_0_1_d.pdb" /Gd /TP /analyze- /errorReport:prompt ..\src\engine.Boot.cpp ..\src\engine.Core.cpp ..\src\engine.Interfaces。 cpp ..\src\helpers.Log.cpp ..\src\main.cpp

出版前编辑:好的,所以看起来“glload/gl_3_3.hpp”是这里的问题。它设法打破了easylogging++。那是我的事。这怎么可能呢?我能做些什么?

编辑以添加真实代码

引擎.Core.hpp

引擎.Core.cpp

助手.Log.hpp

助手.Log.cpp

0 投票
1 回答
866 浏览

c++ - ARB_DEBUG_OUTPUT 访问冲突

我正在使用ARB_DEBUG_OUTPUT扩展程序来捕获 OpenGL 错误,但在调用我的错误记录函数后程序崩溃了。

我使用此博客文章中的代码设置了扩展。这是我用来设置回调的确切代码:

这里是debugCallbackARB

我使用glEnable无效参数来触发回调:

成功打印错误消息后,程序触发未处理的异常Access violation executing location 0x00000500.

我正在使用 SDL2 创建 OpenGL 3.3 核心配置文件调试上下文,并使用GL Load来获取 GL 扩展指针。

glEnable如果我禁用扩展程序,该程序不会因无效呼叫而崩溃。

我怎样才能解决这个问题?

电脑规格:

  • 英伟达 GeForce GT 630
  • ForceWare 327.23
  • 视窗 7 x64

编辑:我也尝试手动调用调试回调,但它不会触发异常。

0 投票
1 回答
121 浏览

c++ - 使用 SDL 的 glload 标头

我正在设置一个使用 SDL 作为“包装器”的 OpenGL c++ 程序。我注意到,只要我添加了这一行:

所有“旧”的 OpenGL 命令,例如 glBegin()、glEnd() 等都变得未定义,即使我仍然有

就在它之后。这不是问题,因为我目前不打算在这个程序中使用它们,但这有点烦人,我想知道是否有办法解决它。

另外,为什么我必须使用

即使我用 C++ 而不是 C 编写,这似乎与 glsdk 文档相矛盾?

glsdk_0_5_2/docs/html/group__module__glload.html