这是我将颜色从 HEX 转换为 glClearColor() 格式的解决方案,该格式是 0 到 1 之间的浮点数。
首先,我将颜色转换为 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);