我正在使用 gDEBugger 来尝试提高我的 openGL 代码的性能(目前它非常糟糕,我什至不会告诉你它的 fps 速率)。我正在逐步完成教程(使用调试器查找 openGL 错误等),现在我正在识别冗余状态更改。我有点不确定更改代码以避免它们是否真的是一个好主意。
例如:
- 我的代码通过调用
glClearAccum(0 , 0 , 0 , 0);
and进行“干净初始化”glClearColor(0.0, 0.0, 0.0, 0.0);
。这些是可以理解的多余的,但我可以在所有情况下依赖它吗?如果某些 openGL 实现不能保证这个初始状态,那么进行调用会更安全,即使它们在大多数情况下是多余的。 glDrawBuffer(GL_BACK);
第一次绘制场景时同样的问题。glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
也被报道是多余的。我意识到我用相同的参数反复调用它;这是因为调用是在 和 之间glEnable(GL_TEXTURE_2D);
进行的glDisable(GL_TEXTURE_2D);
,并且在纹理调用完成时仅短暂启用了纹理。永久启用纹理会影响性能吗?如果我坚持暂时启用纹理,是否可以glTextEnvf
在初始化期间只调用一次,还是会因为此时禁用纹理而失败?还是这取决于openGL的实现?