Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用立方体贴图对球体进行纹理处理(非反射贴图)_C++_Opengl_Texture Mapping - Fatal编程技术网

C++ 使用立方体贴图对球体进行纹理处理(非反射贴图)

C++ 使用立方体贴图对球体进行纹理处理(非反射贴图),c++,opengl,texture-mapping,C++,Opengl,Texture Mapping,我想用立方体贴图对球体进行纹理处理。到目前为止,我的研究已经在谷歌上发布了很多关于OpenGL自动生成纹理坐标的结果,但我想生成我自己的坐标 给定由以0,0,0为中心的不完美球体(高度贴图,但本质上是球体)顶点组成的坐标数组,如何为立方体贴图生成纹理坐标?是否通过GLSL执行此操作?在这种情况下,textureCube接受vec3作为纹理坐标,这是球体上的单位向量。在您的例子中,您将获取片段相对于球体中心的坐标,将其规格化并将其作为坐标传递。无需担心内部表示为六个二维纹理 uniform sam

我想用立方体贴图对球体进行纹理处理。到目前为止,我的研究已经在谷歌上发布了很多关于OpenGL自动生成纹理坐标的结果,但我想生成我自己的坐标


给定由以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,一旦我知道更多