我一直在研究这个问题我有,我似乎无法理解它足够好解决它,所以我想我不妨把它扔出去,智能束可能有一些想法。 :PGLKit的GLKBaseEffect和自定义着色器
基本上我一直在一个iPhone项目的同时,我拥有的奢侈品使用所有最新的框架和目标5.1。所以我一直在使用GLKit和GLKBaseEffect,它们对我来说工作得很好。我开始使用GLKBaseEffect而不是写自己的着色器的原因是我不了解glsl。然而,这些要求变得更加精确,基本效应似乎不再削减。
因为我已经做使用基数效应的影响,我宁愿如果我能保持我的基数效应不变,但在上面添加GLSL型着色器,如果让任何意义我所有的转换。
我的旧方法看起来像这样(这是在一个循环渲染所有对象,其中一个对象包含诸如变换,网格和其他一些不太重要的事情,例如纹理,材质等等。 )
ObjectBase *obj = [ResourceManager.shared getObjectNamed:name inScene:sceneName];
GLKMatrix4 modelview = effect.transform.modelviewMatrix;
effect.transform.modelviewMatrix = GLKMatrix4Multiply(effect.transform.modelviewMatrix, obj.transform);
[effect prepareToDraw];
[obj render];
effect.transform.modelviewMatrix = modelView;
在这里,我们取一个对象来呈现和变换(即平移,旋转和缩放)的对象,然后我们渲染它,那里的渲染本身获取该对象的网格,绑定缓存和渲染。
到目前为止这么好。
但是我想要做的事情是,在[obj render];
调用期间,我希望该对象也可以像glUseProgram(someProgram);
那样添加更专用的着色器代码。
我想人们可能认为我想使用基数效应为我的顶点着色器,想用我的片段着色“正常”的着色器。至少这就是我想我想要做的。
我一直在尝试一些东西。
我试着在它上面创建片段着色器和glUseProgram
,但是它表示在设置和编译它时需要一个顶点和一个片段着色器。我也试图创建一个空的顶点着色器,这个着色器效果并不好,我不知道会发生什么,但我猜测它推翻了基本效果。
我扶着走向,到底会接受,它可能是最好的抛出了基数效应,只是写我自己的着色器的所有道路。我只是觉得在窗外工作很多,所以我想看看我可以节省多少钱。
我也明白,我的着色器的理解是给我最多的问题的一部分,所以请耐心等待与事实。
我似乎已经完全忘记了实际上说谢谢你提供的链接确实拓宽了我的理解。我很高兴我问,即使在问的时候我觉得我根本不知道我实际上做了什么要求......这么好的工作搞清楚了;)谢谢。 – qrikko
非常感谢。我很沮丧,我的着色器正在编译和链接,但没有输出任何东西。去掉prepareToDraw的这个调用就行了。生活很好! – VaporwareWolf