Iphone 编写GLKBaseEffect替代品

Iphone 编写GLKBaseEffect替代品,iphone,ios,objective-c,opengl-es-2.0,glkit,Iphone,Ios,Objective C,Opengl Es 2.0,Glkit,最近,我一直在学习如何使用OpenGLES2.0和GLKit创建简单的2D游戏。我一直在关注,到目前为止,它非常有帮助。然而,在分析我的项目(和他的项目)是否存在漏洞时,我发现glkbaseffect的prepareToDraw:(特别是GLKShaderBlockNode的copyWithZone)到处都在泄漏——顺便说一句,我正在使用ARC。在搜索了相当一段时间后,这似乎是glkbaseffect中的一个bug,我对此无能为力。这是真的吗?我发现建议的唯一解决方案是完全取消glkbaseff

最近,我一直在学习如何使用OpenGLES2.0和GLKit创建简单的2D游戏。我一直在关注,到目前为止,它非常有帮助。然而,在分析我的项目(和他的项目)是否存在漏洞时,我发现
glkbaseffect
prepareToDraw:
(特别是
GLKShaderBlockNode
copyWithZone
)到处都在泄漏——顺便说一句,我正在使用ARC。在搜索了相当一段时间后,这似乎是
glkbaseffect
中的一个bug,我对此无能为力。这是真的吗?我发现建议的唯一解决方案是完全取消
glkbaseffect

如果是这种情况,我必须滚动自己的自定义顶点和片段着色器。然而,我不知道该怎么做。如果您能提供有关创建自定义着色器和修改上述教程中的代码以使用这些着色器的任何资源或帮助,我将不胜感激


非常感谢您抽出时间。:)

对于初学者,在XCode do File->New Project中选择“OpenGL游戏”

运行它,如果你选择,你会得到两个立方体围绕着对方

查看shader.fsh和shader.vsh。在viewcontroller.m中,检查compilerShader、linkProgram和validateProgram(它们编译着色器)

检查该示例应用程序应该足以让您“了解”如何运行着色器,并从此开始搜索一些OpenGL ES 2.0着色器教程或查看Apple代码库中的一些示例应用程序


注意:从苹果内置的easy effects到着色器是一个相当宽的“峡谷”。

好吧,经过相当多的拖延之后,我决定咬紧牙关去做。泄漏现在消失了,尽管我花了一段时间才使它工作起来。我通读并学习了顶点和片段着色器以及如何编译和链接它们。了解了它的工作原理后,我将作者的
GLProgram
helper类放入我的项目中,以处理所有样板文件,并快速开始工作。然后,我创建了两个着色器,与找到的着色器几乎相同


我按照他的指示获取属性和统一位置,并将它们存储在一个结构中,在初始化时将它们同时传递给我的sprite对象。然后,到了渲染的时候,我传入了属性的所有信息,就像我之前使用
glkbaseffect
时所做的那样;唯一的区别(除了手动将纹理绑定到纹理单元之外)是我必须在自己身上传入
modelviewMatrix
projectionMatrix
制服,而不是设置
glkbaseffect
属性。

看起来可能就是您要找的。@Bejmax谢谢。如果我明天也能找到一个关于OpenGL ES 2.0着色器的好教程,这可能会有所帮助。我发现仅仅通过源代码很难获得很好的理解。:)+1.我刚才看了看,不太明白。考虑到它们有两个立方体,一个使用GLKit,另一个使用自定义着色器,这似乎有点复杂。这是漫长的一天。明天我将尝试更彻底地检查苹果的模板。