我非常精通OpenGL和GLSL,虽然我目前只用C ++编写OpenGL / GLUT,或GLMan用于GLSL。我一直在寻找移动设备上的OpenGL,特别是Android,并且只有几个问题。
首先,我知道你必须在ES 2.0中“编写整个管道”,但我相信这就是我一直在做的,在GLSL中,对吧?创建.vert
和.frag
文件,依此类推?
其次,我一直在查看this教程,看起来很有帮助,但第一件让我感到高兴的是顶点/片段着色器代码。有没有办法将其指定为文件?我无法想象必须以可怕的字符串连接格式编写着色器。
接下来,首先,查看事物/学习precision mediump float
之类的东西的最佳参考,因为我以前从未见过这样的事情,其次,是否存在绘制平行线的资源在上述声明和我更习惯的事情之间,例如uniform float x
和varying vec3 y
?
最后,任何人都可以推荐一本学习OpenGL ES 2.0的好书,考虑到我至少应该掌握一些并行知识吗?
答案 0 :(得分:3)
Re:编程整个管道;它可能是你一直在做的着色器,但不一定是。当他们在桌面上引入着色器时,他们会放置一大堆向后兼容的东西,例如ftransform
。在ES 2.0中并非如此。除了其他差异之外,没有任何矩阵堆栈,也没有预定义的属性或制服。所以你必须编写比桌面GL 2.0更严格的管道编程,但不一定比你更多。
Re:将着色器保存在单独的文件中;这绝对不是问题。只需从文件中加载String
即可。任何旧的Java方法都可以,例如this one
回复:参考;绝对最好的是OpenGL ES 2.0 API Quick Reference Card(PDF)。只需四页就可以了解所有OpenGL ES 2.0。关于您要求的具体事项,请参阅第三页上的精度限定符(这是GLSL部分的第一页)。我不知道直接用于绘制并行的资源,但只是搜索该文档的任何意外语法应该这样做。不同寻常的东西,比如精确限定符,都是微小的调整,你可以通过查看和自己来轻松感受。
回复:一本书;我没有直接意识到任何事情。我想默认建议是the blue book。