zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/luenmicro/p/3700969.html
Copyright © 2011-2022 走看看