3

アプリケーションのres/values/colors.xmlファイルでは、赤色が#AARRGGBB形式で定義されています。

    <color name="red">#ffff0000</color>

この色を glClearColor や他の OpenGL ES 関数の引数として使用する方法は? 例えば:

     public void onSurfaceCreated(GL10 unused, EGLConfig config) {
         GLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // <-- How to connect R.color.red here? 
     }
4

3 に答える 3

0

これは、HEX から 0 と 1 の間の浮動小数点数である glClearColor() 形式に色を変換する私のソリューションです。

最初に色を RGB に変換し、次にその色を 0 から 1 にマッピングします。

/* re-map RGB colors so they can be used in OpenGL */
private float[] map(float[]rgb) {

    /* RGB is from 0 to 255 */
    /* THIS is from 0 to 1 (float) */

    // 1 : 2 = x : 4 >>> 2

    /*
    *
    * 240 : 255 = x : 1
    *
    * */

    float[] result = new float[3];
    result[0] = rgb[0] / 255;
    result[1] = rgb[1] / 255;
    result[2] = rgb[2] / 255;
    return result;
}

public float[] hextoRGB(String hex) {

    float[] rgbcolor = new float[3];
    rgbcolor[0] = Integer.valueOf( hex.substring( 1, 3 ), 16 );
    rgbcolor[1] = Integer.valueOf( hex.substring( 3, 5 ), 16 );
    rgbcolor[2] = Integer.valueOf( hex.substring( 5, 7 ), 16 );
    return map(rgbcolor);
}

使用法:

    //0077AB is HEX color code
    float[] values = hextoRGB("#0077AB");

    GLES20.glClearColor(values[0], values[1], values[2], 1.0f);
于 2014-06-15T14:11:27.027 に答える