OpenGL天空盒

1.把立方体贴图加载到OpenGL中,贴图选择大小相同的正方形图片,立方体贴图的惯例是:在立方体内部使用左手坐标系统,而在立方体外部使用右手坐标系统。
OpenGL天空盒_第1张图片
2.创建立方体,使用索引数组绘制,减少内存使用
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

你可能感兴趣的:(openGL)