我一直在为添加着色器的旧游戏开发一个黑客。 dll拦截opengl调用,然后根据需要修改渲染管道。我用glew加载扩展函数。我第一次测试在不同于我主要开发的计算机上编译和使用.dll。
我之前在这台新机器上运行过这个dll的构建,但现在,当我从这台机器上的工作源编译dll并尝试使用它时,我收到了访问冲突许多gl *函数调用(glGenTextures
,glBindTexture
),如下所示:
Unhandled exception at 0x0C941CA3 in Game.exe: 0xC0000005: Access violation reading location 0xD8EBE92C. occurred
为了初始化glew,我在拦截第一个glewInit
电话时拨打glSwapBuffers
。 AFAIK告诉我上下文已经存在,并且在此init步骤之后调用gl调用。我在启用glewExperimental
的情况下尝试了此操作。当我收到这些错误时,我没有迹象表明glew没有正确初始化(glewInit() == GLEW_OK
)
我是否遗漏了有关机器间OpenGL / glew可用性的信息?
它正常运行的主要开发机器有一台运行在Windows 10上的Nvidia Geforce GTX 660ti,使用VS2015进行编译
它失败的二次开发机器,在Windows 7上运行“AMD FirePro M6100 FireGL V”,用VS2017编译