当前位置:  开发笔记 > 编程语言 > 正文

使用Cubemaps纹理球体(不是反射贴图)

如何解决《使用Cubemaps纹理球体(不是反射贴图)》经验,为你挑选了1个好方法。

我想用立方体贴图来纹理球体.到目前为止,我的研究已经在Google上引发了许多结果,涉及使OpenGL自动生成纹理坐标,但我想生成自己的坐标.

给定一个坐标数组,包括以0,0,0为中心的不完美球体(高度映射但基本上是球体)的顶点,如何为立方体贴图生成纹理坐标?



1> UncleZeiv..:

你是通过GLSL做的吗?在这种情况下,textureCube接受vec3作为纹理坐标,它是球体上的单位矢量.在您的情况下,您将获取片段相对于球体中心的坐标,将其标准化并将其作为坐标传递.无需担心内部表示为六个二维纹理.

uniform samplerCube cubemap;
varying vec3 pos; // position of the fragment w.r.t. the center of the sphere
/* ... */
vec4 color = textureCube(cubemap, normalize(pos).stp);

它也适用于固定管道OpenGL.

顺便说一下,这里是如何在内部使用坐标:绝对值中的最大坐标用于选择从中读取六个纹理中的哪一个(符号选择正或负).另外两个坐标用于在被最大坐标除以后在所选地图中查找纹素.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有