1.把立方体贴图加载到OpenGL中,贴图选择大小相同的正方形图片,立方体贴图的惯例是:在立方体内部使用左手坐标系统,而在立方体外部使用右手坐标系统。
2.创建立方体,使用索引数组绘制,减少内存使用
3.增加天空盒着色器程序
//res/raw/skybox_vertex_shader.glsl
uniform mat4 u_Matrix;
attribute vec3 a_Position;
varying vec3 v_Position;
void main()
{
v_Position = a_Position;
//把世界的右手坐标空间转换为天空盒的左手坐标空间
v_Position.z = -v_Position.z;
gl_Position = u_Matrix*vec4(a_Position, 1.0);
//设置贴图在远平面上
gl_Position = gl_Position.xyww;
}
//res/raw/skybox_fragment_shader.glsl
precision mediump float;
uniform samplerCube u_TextureUnit;
varying vec3 v_Position;
void main()
{
gl_FragColor = textureCube(u_TextureUnit, v_Position);
}
4.渲染器添加天空盒
5.围绕场景移动摄像头
6.源码:https://github.com/HQlin/Skybox/commits/master