opengl glsl 之绘制简单天空盒(1)

这个天空盒demo主要利用采集立方体纹理,贴合到屏幕四边形上。

天空盒的专业术语叫立体贴图。就是在单位立方体外表面贴上6张纹理。在立方体的中心点向外的各个方向为纹理的采样坐标。

这里绘制一个屏幕四边形,再经过反向变换,将NDC坐标空间变换到裁剪空间,再由裁剪空间变换到变换到模型视图空间。将视图空间点的方向作为立体贴图的纹理采样坐标,采样立方体纹理。

这里程序默认朝向-Z轴,所以实验我们可以看到一个-Z。因为立方体纹理为一个立方体的外表面,所以当以视点为中心相当于采样立方体的内表面,所以我们看到的一个-Z是左右相反的。所以在裁剪空间将左右对调。再变换到视图空间。

立方体纹理:


实验结果:

顶点着色器:

void main()
{
    gl_Position = a_vPosition;
    
    // Force all depths to just inside the far clip plane. If we put z=0.9999
    // in the vertex attributes, it messes up the cube projection below.
    // Nobbling it here is easier.
    gl_Position.z = 0.9999;

    vec4 vPos = u_mProjectionMat * a_vPosition;
    vPos /= vPos.w;
	
	if(u_flipX<1.0)
	{
		vPos.x = -vPos.x;  
	}else
	{
		vPos.x =vPos.x;  
	}
    v_vCubemapCoord = (mat3(u_mInverseViewMat) * vPos.xyz);

}

完整源码下载:

关注公众号回复 0003 下载。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值