• NDK中, 如何提高脚本式语言的可读性


    原文来自安卓教程网android.662p.com,转载时请注明文章的来源:http://android.662p.com/thread-5245-1-1.html

    [概述]  
       
    NDK开发中, 最常见的脚本式语言应该就是 GLSL(OpenGL Shading Language) , 此类语言(一般情况下)不能以单个代码文件形式编写(并不以文件形式直接参与编译), 而是需要先以字符串形式完成编码, 然后通过开发语言接口的调用来完成工作. 就这种形式的编码, 个人是挺不喜欢的, 一来不易书写, 容易笔误, 二来不易阅读. 

    下面以GLSL为例. 

    [常规方法]  
    余不赘言, 直接上代码 
    // 定义GLSL
    const char *demo_glsl =
            "// TODO 定义变量1"
            "// TODO 定义变量2"
            "// TODO 定义变量3"
            "void main(void) {"
            "    // TODO 进行运算"
            "}";
    // TODO 将 GLSL 输入到 GL 的接口 




    [改进方法]

    [ol] 
      新建.glsl文件, 并以C/C++形式编辑, 勿需以字符串形式编辑, 见Snippet-1;  
      编辑Android.mk, 主要是通过sh脚本来重新输出.glsl, 并以.glslh作为后缀名, 见Snippet-2;  
      在主要代码里通过include来调用.glslh, 见Snippet-3.
       
    [/ol]    
    // Snippet-1
    // demo.glsl
    // TODO 定义变量1
    // TODO 定义变量2
    // TODO 定义变量3
    void main(void) {
      // TODO 进行运算
    }  // Snippet-2
    // Android.mk
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    $(shell $(LOCAL_PATH)/prebuild.sh demo.glsl $(LOCAL_PATH) $(LOCAL_PATH))
    //--- END OF Android.mk ---
    // prebuild.sh
    #!/bin/sh
    mkdir -p $3
    cat $2/$1 | sed -e 's|^.*$|"&\n"|' > $3/$1h
    //--- END OF prebuild.sh --- // Snippet-3
    // demo.cpp
    // 定义GLSL
    const char demo_glsl={
        #include "demo.glslh"
    }; 
      [最后的话]
    从本质上来讲, 两种方法其实是一致的, 只不过是修改了输入的形式. 记得经典Objective-C(橙子)的那本书有一章就讲过: 通过间接的方法, 任何事情都可以完成. 或许会有人觉得这是多此一举, 但我们从另外一个角度来看的话, 或许是一件提高工作效率的事情, 尤其是在当下辅助工具颇丰的环境下, 比如语法高亮标记工具. 当然这种方法不只限于GLSL, 只要你想.  

    详细说明:http://android.662p.com/thread-5245-1-1.html

  • 相关阅读:
    一段代码让你了解匿名函数的来龙去脉
    橡皮擦背景色橡皮擦魔术橡皮擦
    flv播放器
    测试面试题01
    java中堆和栈的区别
    经典javaThead 生产者 消费者
    判断一个点是否在三个点组成的三角形内 java 代码 面试经典
    软件项目管理面试题
    java中的位运算
    真正的JDBC java代码
  • 原文地址:https://www.cnblogs.com/luenmicro/p/3700969.html
Copyright © 2020-2023  润新知