OpenGL(十三) 天空盒 的 shader 实现


天空盒 的使用可以使用户感觉所处一个封闭的世界环境,使得游戏更加真实。本文主要介绍如何通过OpenGL和GLSL来实现天空盒。

核心原理

天空盒 的核心原理其实并不复杂,它相当于在视线外套上一个盒子。盒子有6个面,分别使用6张可以拼接在一起的图片。从原理上讲,通过比较视线的xyz,可以找到方向,可以计算出应该渲染的与盒子面的交点,进而选出应绘制的面进行渲染。从实现的角度理解,首先将天空盒与摄像机放在同一位置,然后将盒子绘制出来即可。

实现

C++代码方面,通过SOIL可以创建一个cubemap,然后将其传入shader,其接方法如下:

着色器方面,接收传入的值后,将3D采样纹理绘制出即可。实现shader为:

总结

通过上面的代码即可在OpenGL中实现 天空盒 的效果。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/414.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注