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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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++ Assimp无法加载层模型的顶点颜色_C++_Opengl_Glsl_Assimp_Ply File Format - Fatal编程技术网

C++ Assimp无法加载层模型的顶点颜色

C++ Assimp无法加载层模型的顶点颜色,c++,opengl,glsl,assimp,ply-file-format,C++,Opengl,Glsl,Assimp,Ply File Format,我在windows上使用带OpenGL的assimp3.0。我尝试通过以下行加载和显示帘布层模型: Assimp::Importer importer; const aiScene* scene = NULL; scene = importer.ReadFile('filename', 0); 我用scene->mMeshes[0]->mVertices构建了顶点缓冲区,用scene->mMeshes[0]->mColors构建了颜色缓冲区 但是,当我调试代码时,只有scene->mMeshe

我在windows上使用带OpenGL的assimp3.0。我尝试通过以下行加载和显示帘布层模型:

Assimp::Importer importer;
const aiScene* scene = NULL;
scene = importer.ReadFile('filename', 0);
我用
scene->mMeshes[0]->mVertices构建了顶点缓冲区,用
scene->mMeshes[0]->mColors构建了颜色缓冲区
但是,当我调试代码时,只有
scene->mMeshes[0]->mColors[0]
获得了颜色,
scene->mMeshes[0]->mColors[1]
以下元素仍然为空 下面是我写的一个简短的例子:

ply
format ascii 1.0
comment VCGLIB generated
element vertex 3
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property uchar alpha
element face 1
property list uchar int vertex_indices
end_header
0.0 0.0 0.0 219 227 248 255
1.0 0.0 0.0 220 230 212 255
2.0 0.0 2.0 160 122 221 255
3 0 1 2
我现在想知道这是否是由于导入器.ReadFile(pFile,pFlags)
的pFlags参数错误引起的


谁能帮我找出哪个部件出了问题。

我想我理解这个问题

你在读这样的颜色

for (int i = 0; i < vertexCount; i++)
    vertexColor = scene->mMeshes[0]->mColors[i];
for(int i=0;imMeshes[0]->mColors[i];
但是,AssImp可以存储多个顶点颜色通道,因此您应该这样阅读它

for (int i = 0; i < vertexCount; i++)
    vertexColor = scene->mMeshes[0]->mColors[0][i];
for(int i=0;imMeshes[0]->mColors[0][i];

这将在ReadFile方法中读取第0个顶点颜色通道中的颜色尝试将PFLAG作为aiProcessPreset\u TargetRealtime\u Quality发送。但是,在这种情况下,这不重要。我尝试过,但除了第一个顶点外,它仍然不会加载顶点的颜色信息。我知道mColors是一个vector3d数组。问题是只有mColors[0]得到了正确的值,比如说..[0.9,0.8,0.9],但是mColors[1]得到了NULL,并且对于以下空格也是如此..像这样读取这些值。mColors[0][0]、mColors[0][1]、mColors[0][2]、mColors[0][3]、mColors[0][4]、,mColors[0][n],其中n是顶点数。层中有一个顶点颜色通道,因此所有颜色值都位于二维阵列旁边