Roo*_*kie 10 c++ opengl glsl visual-studio-2008
目前我只是这样做:
someuniform1 = glGetUniformLocation(MyShaderName, "someuniform1");
someattribute1 = glGetAttribLocation(MyShaderName, "someattribute1");
Run Code Online (Sandbox Code Playgroud)
但是这个方法看起来很烦人,所以我想使用std :: map:
Shaders[MyShaderName].Uniforms["someuniform1"] = glGetUniformLocation(MyShaderName, "someuniform1");
Shaders[MyShaderName].Attributes["someattribute1"] = glGetAttribLocation(MyShaderName, "someattribute1");
// i could add a function to remove the repetition of the two strings at both sides.
Run Code Online (Sandbox Code Playgroud)
有没有更明智/更快的方法呢?(尽可能减少重复).
-
编辑:我正在考虑更多关于这个想法,我想,如果我只是阅读glsl源文件,解析统一/属性并自动设置到我的地图,这不是很好,我不需要写除glsl源之外的任何内容!?这是大男孩们这样做的吗?
Edit2:我现在正在成功解析GLSL着色器文件,并且使用该std::map方法,我使用单个函数调用和一个字符串参数来获取当前启用的着色器中的制服/属性的地址.如果我需要更多性能,我将缓存std::map对其他变量的调用.但我想知道我是否在这里正确的轨道...所以请,任何评论赞赏.
枚举着色器程序的制服GetActiveUniform,然后将它们存储在地图中.
编辑:目的.
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |