opengl - OpenGL中非状态改变纹理重新绑定的惩罚
问题描述
在 OpenGL 中更改活动纹理是一项昂贵的操作。我正在通过按所需纹理对绘制的对象进行批处理来优化一些代码。我已经在应用程序端实现了针对此问题的修复,但我想要一个在我这样做时弹出的问题的答案。
假设我有以下代码:
bindTexture(tex1);
draw();
changeSomeUniforms();
bindTexture(tex1); // I rebind the same texture as used above!
draw();
bindTexture(tex2);
draw();
假设所有纹理都绑定到,OpenGL 是否能够在没有我干预的情况GL_TEXTURE0
下忽略不必要的重新绑定?tex1
既然调用不会改变 OpenGL 的状态,那么 OpenGL 会忽略它吗?
我目前通过类似的纹理批量处理,所以上面在我的应用程序中是这样的:
bindTexture(tex1);
draw();
changeSomeUniforms();
draw();
bindTexture(tex2);
draw();
我想知道 OpenGL 是否比我更聪明,并且在没有我干预的情况下没有重新绑定相同的纹理?
解决方案
推荐阅读
- python - 上传到 Pypi 失败“400 Start filename for package”
- python - 在for循环pygame中绘制多个图像
- java - 单击行中的按钮突出显示 ListView 中的行
- python - 更改 ms 团队聊天中的消息
- c# - 值之间范围内的伪造字符串长度
- python - 将我的 .db 文件数据发送到电子邮件并删除其中的旧记录
- reactjs - 没有导航道具的反应本机导航
- django - 页面未形成 404 错误 - 未显示 (找到) 的蛞蝓 ID:http://127.0.0.1:8000/postscommentapp/6/how-learn-anything-very-easily
- flutter - Flutter With VSCODE :Exception: Gradle task assembleDebug failed with exit code 1 BUILD FAILED in 22s
- gitlab - 如何通过 LDAP 使用 python 登录 GitLab?(使用版本 ce-8.1.4)