android如何优雅的编写OpenGl的shader代码
  oHo4xnCa6cuT 2023年12月22日 110 0


通常在android里编写openGl代码的方式是创建一个类,类里面用硬编码的形式引入两个shader,如下图:

android如何优雅的编写OpenGl的shader代码_android


这里把glsl语言通过string字符串的形式定义在类里,虽然便于管理,但是不利于阅读和编写

那么有没有比较优雅的解决方案呢?

首先在assets里面定义一个glsl的类,glsl需要引入插件才能识别

android如何优雅的编写OpenGl的shader代码_硬编码_02

android如何优雅的编写OpenGl的shader代码_android_03


然后在里面编写gl代码

android如何优雅的编写OpenGl的shader代码_硬编码_04


添加引用:

//引入okio
fun getAsset(ctx: Context?, path: String): String {
val sb = StringBuilder()
ctx?.assets?.open(path)?.source()?.buffer()?.let {
    while (!it.exhausted()) {
        sb.append(it.readUtf8Line())
        sb.append("\n")
    }
    return sb.toString()
}
return ""
}

最后使用:

android如何优雅的编写OpenGl的shader代码_硬编码_05


getAsset获取的就是string的内容

也可以把文件放入raw文件夹,并引入

implementation 'com.blankj:utilcodex:1.31.0'

调用

ResourceUtils.readRaw2String(R.raw.***)


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
oHo4xnCa6cuT