C++ 使用立方体贴图对球体进行纹理处理(非反射贴图)
我想用立方体贴图对球体进行纹理处理。到目前为止,我的研究已经在谷歌上发布了很多关于OpenGL自动生成纹理坐标的结果,但我想生成我自己的坐标C++ 使用立方体贴图对球体进行纹理处理(非反射贴图),c++,opengl,texture-mapping,C++,Opengl,Texture Mapping,我想用立方体贴图对球体进行纹理处理。到目前为止,我的研究已经在谷歌上发布了很多关于OpenGL自动生成纹理坐标的结果,但我想生成我自己的坐标 给定由以0,0,0为中心的不完美球体(高度贴图,但本质上是球体)顶点组成的坐标数组,如何为立方体贴图生成纹理坐标?是否通过GLSL执行此操作?在这种情况下,textureCube接受vec3作为纹理坐标,这是球体上的单位向量。在您的例子中,您将获取片段相对于球体中心的坐标,将其规格化并将其作为坐标传递。无需担心内部表示为六个二维纹理 uniform sam
给定由以0,0,0为中心的不完美球体(高度贴图,但本质上是球体)顶点组成的坐标数组,如何为立方体贴图生成纹理坐标?是否通过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中也是这样工作的
顺便说一句,这里是如何在内部使用坐标:绝对值中最大的坐标用于选择从六种纹理中的哪一种读取(符号选择正或负)。其他两个坐标用于在被最大坐标除以后查找所选地图中的纹理。是否通过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中也是这样工作的
顺便说一句,这里是如何在内部使用坐标:绝对值中最大的坐标用于选择从六种纹理中的哪一种读取(符号选择正或负)。其他两个坐标被最大坐标除后,用于查找所选地图中的纹理。谢谢!我在平原C++ ATM工作,但最终移动到GLSL,一旦我知道更多关于ITLSCAP谢谢你!我工作在普通C++ ATM,但最终转移到GLSL,一旦我知道更多