最近,我一直在尝试学习如何使用OpenGL ES 2.0和GLKit来创建简单的2D游戏。我一直在关注this tutorial by Ray Wenderlich,到目前为止,它非常有帮助。但是,在对我的项目(及其项目)进行泄漏分析时,我发现GLKBaseEffect
的prepareToDraw:
(特别是GLKShaderBlockNode
的copyWithZone
)到处泄漏-顺便说一下,我在使用ARC。在搜索了很多之后,似乎这是GLKBaseEffect
中的错误,我对此无能为力。这是真的?我发现建议的唯一解决方案是完全废弃GLKBaseEffect
。
如果是这种情况,结果是我必须滚动自己的自定义顶点和片段着色器。但是,我不知道该怎么做。我将不胜感激任何资源或在创建自定义着色器以及调整以上教程中的代码以使用这些着色器方面的帮助。
非常感谢您的宝贵时间。 :)
最佳答案
对于初学者,在XCode中执行File-> New Project,然后选择“OpenGL Game”。
如果选择运行它,就会得到两个相互围绕的多维数据集。
看一下shader.fsh和shader.vsh。在viewcontroller.m中,检查compilerShader,linkProgram和validateProgram(这些用于编译着色器)。
检查该示例应用程序应该足以使您“掌握”如何运行着色器的知识,然后从该位置开始搜索一些OpenGL ES 2.0着色器教程或在Apple代码库中查看一些示例应用程序。
注意:从Apple的内置简易效果到着色器是一个非常宽的“峡谷”。