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
C++ OpenGL和GL_与GLD元素的混合_C++_Opengl_Multitexturing - Fatal编程技术网

C++ OpenGL和GL_与GLD元素的混合

C++ OpenGL和GL_与GLD元素的混合,c++,opengl,multitexturing,C++,Opengl,Multitexturing,通过添加glDepthFunc(GL_始终)解决 我正在尝试将高度场上的两种纹理与gldrawerelements混合。Normalpointer和vertexpointer数据相同,但这两种纹理的TexCoordPointer不同。无论我尝试哪种BlendFunc,始终只有一种纹理可见,尽管纹理的大部分是透明的。glDraweElements是否与gl\u blend配合使用,还是我做错了 glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE_MINUS

通过添加glDepthFunc(GL_始终)解决

我正在尝试将高度场上的两种纹理与
gldrawerelements
混合。Normalpointer和vertexpointer数据相同,但这两种纹理的TexCoordPointer不同。无论我尝试哪种BlendFunc,始终只有一种纹理可见,尽管纹理的大部分是透明的。
glDraweElements
是否与gl\u blend配合使用,还是我做错了

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
glDepthFunc(GL_ALWAYS);

glNormalPointer(GL_FLOAT, 0, normals);
glVertexPointer(3, GL_FLOAT, 0, vertices);

glTexCoordPointer(2, GL_FLOAT, 0, texture_ind_one);
glBindTexture(GL_TEXTURE_2D, texture_one);
glDrawElements(GL_TRIANGLES, indicies_num, GL_UNSIGNED_INT, indices);

glNormalPointer(GL_FLOAT, 0, normals);
glVertexPointer(3, GL_FLOAT, 0, vertices);

glTexCoordPointer(2, GL_FLOAT, 0, texture_ind_two);
glBindTexture(GL_TEXTURE_2D, texture_two);
glDrawElements(GL_TRIANGLES, indicies_num, GL_UNSIGNED_INT, indices);

多谢各位

您需要通过
glDepthFunc
使用包含“equals”(可能是
GL_LEQUAL
)的内容设置适当的深度函数,因为您在同一深度绘制了两次


你也可以考虑将纹理本身混入片段着色器中。

你需要通过使用代码“>GeldthFunc”中的“相等”来设置一个适当的深度函数(很可能是GLY-LQUAL ),因为你在同一深度上绘制了两次。

你也可以考虑将纹理本身混入片段着色器中。

你需要通过使用代码“>GeldthFunc”中的“相等”来设置一个适当的深度函数(很可能是GLY-LQUAL ),因为你在同一深度上绘制了两次。

你也可以考虑将纹理本身混入片段着色器中。

你需要通过使用代码“>GeldthFunc”中的“相等”来设置一个适当的深度函数(很可能是GLY-LQUAL ),因为你在同一深度上绘制了两次。

你也可以考虑在一个片段着色器中混合纹理。

尝试使用一个“相等”的东西,通过<代码> GLDETHFUNC来设置深度函数,因为你用相同的深度绘制了两次。如果这不起作用,请至少在给定的代码示例中包含深度函数。谢谢!!!我使用了glDepthFunc(GL_始终);现在它工作得很好!发布了我的评论的一个稍加修改的版本作为答案。请尝试通过
glDepthFunc
使用包含“等于”的内容设置深度函数,因为您正在使用相同的深度绘制两次。如果这不起作用,请至少在给定的代码示例中包含深度函数。谢谢!!!我使用了glDepthFunc(GL_始终);现在它工作得很好!发布了我的评论的一个稍加修改的版本作为答案。请尝试通过
glDepthFunc
使用包含“等于”的内容设置深度函数,因为您正在使用相同的深度绘制两次。如果这不起作用,请至少在给定的代码示例中包含深度函数。谢谢!!!我使用了glDepthFunc(GL_始终);现在它工作得很好!发布了我的评论的一个稍加修改的版本作为答案。请尝试通过
glDepthFunc
使用包含“等于”的内容设置深度函数,因为您正在使用相同的深度绘制两次。如果这不起作用,请至少在给定的代码示例中包含深度函数。谢谢!!!我使用了glDepthFunc(GL_始终);现在它工作得很好!发布了我的评论的一个稍加修改的版本作为回答。