我想修改glBindTexture()函数以跟踪以前绑定(bind)的纹理ID。目前,我刚刚为其创建了一个新函数,但是后来我意识到,如果我使用其他使用glBindTexture的代码:那么我的整个系统可能会陷入困境。

那我该怎么办呢?

编辑:现在,当我想到它时,检查我是否应该绑定(bind)纹理是没有用的,因为opengl可能已经这样做了。但是我仍然需要跟踪以前使用的纹理。

最佳答案

一种可能性是使用宏替换对glBindTexture的现有调用:

#define glBindTexture(target, texture) myGlBindTexture(target, texture)

然后在代码中要防止使用宏的地方,用括号将名称括起来:
(glBindTexture)(someTarget, someTexture);

类似于函数的宏仅在名称后紧跟一个右括号的地方被替换,因此可以防止宏扩展。

由于这是一个宏,因此只会影响在可见的宏下编译的源代码,而不会影响现有的DLL,静态库等。

08-27 21:11