我屮艸芔茻,轉眼就7月份了。
今天試了一下立方體貼圖,比較簡單,大概說下和平面貼圖的區別。
1. 平面貼圖需要的是紋理坐標vec2;立方體貼圖需要的是一個方向向量vec3,長度沒有關系,重要的是方向,OpenGL會根據方向向量與立方體的各個面的交點來采樣紋理。
2.在立方體的六個面貼六張不同的圖片,我用的方法是將六張圖片讀入到OpenCV的Mat數組中,需要從BGR轉到RGB,然后一個一個去綁定紋理。此時區別2D紋理的地方在於要是用GL_TEXTURE_CUBE_MAP,而不再是GL_TEXTURE_2D了。可以用簡單的for循環去一個個綁定紋理,紋理目標是枚舉類型,依次加1。
3. 在頂點着色器中輸出vec3的方向向量,在片段着色器中讀入。片段着色器中需要uniform 一個samplerCube ,而不是2D紋理中的sampler2D。最后用texture函數去采樣就行了。
4. 其他部分就不贅述了
渲染結果如下圖
代碼已上傳到git:https://git.oschina.net/rxdj/cubetestopengl.git。
夜已深,就到此。