零蚀
前言
- 步骤如下:
-
step 1:实现一个三色揉合的三角形,从案例出发,解释其用法和原理。
-
step 2:长宽比问题。利用矩阵完成正投影。
-
色彩设置
-
介绍
-
之前都是直接限定死了一个元素对象的色彩,比如之前的三角形,线,点,在这一篇里会设置它不同颜色糅合的情况,然后还会设置阴影。之前我们是如何限定死只渲染了一种颜色的呢?首先我们在顶点着色器里面定义了一个
v_Color
,这个是干嘛的,它是控制顶点着色的,然后这个参数,会将色值传递给片段着色器的v_Color
,然后再由gl_FragColor = v_Color;
来设置片段着色器的颜色。 -
而我们实在java里
int uColorLocation=glGetUniformLocation
获取了颜色(顶点着色器)的参数,然后通过GLES20.glUniform4f(uColorLocation , Rf, Gf, Bf, Af);
对这个v_Color
进行赋值。 -
Opengl给我们一种相对而言不损耗过多性能的方案,就是,通过设置图形的每个点颜色,来起到颜色平滑过度的效果。我们要让整个桌面看起来有灯照效果,所以要将,平面的中心点的颜色设置起来,这样,就可以通过中点到四周呈光亮度降低的感觉。
代码上我们一刻这么写
// one 0, 0, -0.5f, -0.5f, 0.5f, -0.5f, // two 0, 0, 0.5f, -0.5f, -0.5f, 0.5f, // three 0 ,0, 0.5f, 0.5f, -0.5f, 0.5f, // four 0.0f,0.0f, -0.5f, 0.5f, -0.5f, -0.5f,
-
然后我们可以重新定义我们桌子的顶点,除了正常的xy之外,还要添加RGB来控制每个点的颜色,我们以一个三角形为例,大致结果如下所示:
-
-
代码&解释
-
首先我们需要设置我们的三角形的顶点的坐标和颜色,修改之前的坐标样式,这里每一行5个参数,代表一个坐标点,坐标的含义对应着 x,y,r, g 。(Android中的颜色例如Color.red色值范围是(0-255),而opengl中的色值是(0-1))
static float tableVertices[] = { // Triangle one 0f, 0f, 0f, 1f, 1f, -0.5f, -0.5f, 1f, 0f, 1f, 0.5f, -0.5f,
-