Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
加载波前文件时,如何将漫反射值(Kd)与纹理(map_Kd)混合? 我只是尝试在C++中编写波前文件加载器。我在www.opengl-tutorial.org上学习了教程。它没有说明如何处理mtl文件,所以我决定自己做。我知道Kd负责漫反射属性的颜色。另一方面,map_Kd负责描述此属性的纹理。mtl文件中始终存在Kd,可以是map\U Kd。我的文件如下所示: . . . newmtl Material.001 Ns 225.000000 Ka 1.000000 1.000000 1.000000 Kd 0.800000 0.800000 0.800000 Ks 0.500000 0.500000 0.500000 Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 2 map_Kd cubetex.bmp . . ._C++_Opengl_Wavefront_Mtl File - Fatal编程技术网

加载波前文件时,如何将漫反射值(Kd)与纹理(map_Kd)混合? 我只是尝试在C++中编写波前文件加载器。我在www.opengl-tutorial.org上学习了教程。它没有说明如何处理mtl文件,所以我决定自己做。我知道Kd负责漫反射属性的颜色。另一方面,map_Kd负责描述此属性的纹理。mtl文件中始终存在Kd,可以是map\U Kd。我的文件如下所示: . . . newmtl Material.001 Ns 225.000000 Ka 1.000000 1.000000 1.000000 Kd 0.800000 0.800000 0.800000 Ks 0.500000 0.500000 0.500000 Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 2 map_Kd cubetex.bmp . . .

加载波前文件时,如何将漫反射值(Kd)与纹理(map_Kd)混合? 我只是尝试在C++中编写波前文件加载器。我在www.opengl-tutorial.org上学习了教程。它没有说明如何处理mtl文件,所以我决定自己做。我知道Kd负责漫反射属性的颜色。另一方面,map_Kd负责描述此属性的纹理。mtl文件中始终存在Kd,可以是map\U Kd。我的文件如下所示: . . . newmtl Material.001 Ns 225.000000 Ka 1.000000 1.000000 1.000000 Kd 0.800000 0.800000 0.800000 Ks 0.500000 0.500000 0.500000 Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 2 map_Kd cubetex.bmp . . .,c++,opengl,wavefront,mtl-file,C++,Opengl,Wavefront,Mtl File,我应该将map_Kd的值乘以Kd吗?还是我应该只使用地图 编辑: 下面是我的片段着色器: #version 430 core in vec2 uv; in vec3 Position_worldspace; in vec3 Normal_cameraspace; in vec3 EyeDirection_cameraspace; in vec3 LightDirection_cameraspace; out vec3 color; uniform sampler2D tex; unifor

我应该将map_Kd的值乘以Kd吗?还是我应该只使用地图

编辑:

下面是我的片段着色器:

#version 430 core

in vec2 uv;
in vec3 Position_worldspace;
in vec3 Normal_cameraspace;
in vec3 EyeDirection_cameraspace;
in vec3 LightDirection_cameraspace;

out vec3 color;

uniform sampler2D tex;
uniform vec3 LightPosition_worldspace;

void main()
{

  vec3 LightColor = vec3(1,1,1);
  float LightPower = 50.0f;

  vec3 MaterialDiffuseColor = texture( tex, uv ).rgb;
    vec3 MaterialAmbientColor = vec3(0.1,0.1,0.1) * MaterialDiffuseColor;
    vec3 MaterialSpecularColor = vec3(0.3,0.3,0.3);

  float distance = length( LightPosition_worldspace - Position_worldspace );

  vec3 n = normalize( Normal_cameraspace );
  vec3 l = normalize( LightDirection_cameraspace );

  float cosTheta = clamp( dot( n,l ), 0,1 );

  vec3 E = normalize(EyeDirection_cameraspace);
    vec3 R = reflect(-l,n);

    float cosAlpha = clamp( dot( E,R ), 0,1 );

  color = MaterialAmbientColor + MaterialDiffuseColor * LightColor * LightPower * cosTheta / (distance*distance) + MaterialSpecularColor * LightColor * LightPower * pow(cosAlpha,5) / (distance*distance);

}

我不知道如何计算MaterialDiffuseColor

发布a是个好主意。你是什么意思?我的程序没有任何错误。我只是想知道如何加载这个mtl文件。我的意思是没有人可以在没有代码的情况下自己复制结果。A是让别人帮助你的最小努力。代码片段还不够好。在加载程序中,我写过一次,我决定将漫反射颜色(Kd)与纹理(Kd_贴图)相乘,如果后者也提供的话。示例文件(从Web下载)看起来没那么糟糕——让我觉得这不是最糟糕的决定。我用作源的链接:来自我之前评论中提供的链接:在渲染过程中,map_Kd值乘以Kd值。;-)我可能是根据这句话做的,但同时我忘了。