我最近使用Assimp将Blender制作的3D模型导入OpenGL。虽然所有的几何都很好,但我注意到一些透明平面(Star)在OpenGL中无法正确渲染。
似乎OpenGL感觉到飞机是透明的,然后忘记绘制它背后的任何模型。当我旋转视图时,"透明"飞机的一部分(星际)不断改变纹理。
此外,她右手握着的模特职员也有从纹理中应用的透明度。当它与她的腿交叉时,它似乎与星星的效果相同,几乎看起来有些混乱的背面剔除。
作为参考,我确保:
第一张和第三张图片来自Assimp Model Viewer,但在我的OpenGL程序中也会出现相同的结果。
我的OpenGL纹理加载:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
我的片段着色器看起来像:
#version 130
in vec2 texcoord;
uniform sampler2D textureSample;
void main()
{
gl_FragData[0] = texture(textureSample, texcoord).aaaa * texture(textureSample, texcoord);
}
我的混合/深度是:
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthFunc(GL_LEQUAL);
知道可能是什么问题吗?