OpenGL+OpenCV实现立方体贴图

时间:2021-10-20 14:38:20

我屮艸芔茻,转眼就7月份了。

今天试了一下立方体贴图,比较简单,大概说下和平面贴图的区别。

1. 平面贴图需要的是纹理坐标vec2;立方体贴图需要的是一个方向向量vec3,长度没有关系,重要的是方向,OpenGL会根据方向向量与立方体的各个面的交点来采样纹理。

2.在立方体的六个面贴六张不同的图片,我用的方法是将六张图片读入到OpenCV的Mat数组中,需要从BGR转到RGB,然后一个一个去绑定纹理。此时区别2D纹理的地方在于要是用GL_TEXTURE_CUBE_MAP,而不再是GL_TEXTURE_2D了。可以用简单的for循环去一个个绑定纹理,纹理目标是枚举类型,依次加1。

OpenGL+OpenCV实现立方体贴图

3. 在顶点着色器中输出vec3的方向向量,在片段着色器中读入。片段着色器中需要uniform 一个samplerCube ,而不是2D纹理中的sampler2D。最后用texture函数去采样就行了。

OpenGL+OpenCV实现立方体贴图

4. 其他部分就不赘述了

渲染结果如下图

OpenGL+OpenCV实现立方体贴图

OpenGL+OpenCV实现立方体贴图

OpenGL+OpenCV实现立方体贴图

代码已上传到git:https://git.oschina.net/rxdj/cubetestopengl.git。

夜已深,就到此。