Opengl es 将透明纹理与深度混合
我正在尝试混合具有透明区域的纹理:Opengl es 将透明纹理与深度混合,opengl-es,textures,alphablending,Opengl Es,Textures,Alphablending,我正在尝试混合具有透明区域的纹理: glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, ...); glVertexPointer( 2, GL_FLOAT, 0, ... ); glEnable (GL_BLEND); glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glDrawArrays( GL_TRIANGLE_STRIP, 0, 4 ); 除非我添加glDisable(GL_DE
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, ...);
glVertexPointer( 2, GL_FLOAT, 0, ... );
glEnable (GL_BLEND);
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glDrawArrays( GL_TRIANGLE_STRIP, 0, 4 );
除非我添加glDisable(GL_DEPTH_TEST),否则顶部纹理的透明部分将覆盖它们下面的所有内容(而不是混合)。有没有办法在不禁用深度的情况下执行此操作?我尝试过各种混合功能,但没有任何帮助。在通常的
GL\u LESS
情况下,启用深度测试实际上不会按深度对几何体排序,它只会阻止基本体绘制,如果它们不比以前绘制的更靠近查看器。这使您可以按所需的顺序绘制不透明几何体,并且仍然可以获得所需的结果,但正确渲染混合几何体通常需要已渲染混合对象后面的所有内容
下面是要使不透明和混合几何体的混合看起来正确的步骤:
glDepthMask(GL\u FALSE)
暂时禁用深度写入