OpenGL 3D模型透明度问题

时间:2015-04-10 07:28:59

标签: opengl textures blender

我最近使用Assimp将Blender制作的3D模型导入OpenGL。虽然所有的几何都很好,但我注意到一些透明平面(Star)在OpenGL中无法正确渲染。

似乎OpenGL感觉到飞机是透明的,然后忘记绘制它背后的任何模型。当我旋转视图时,"透明"飞机的一部分(星际)不断改变纹理。

此外,她右手握着的模特职员也有从纹理中应用的透明度。当它与她的腿交叉时,它似乎与星星的效果相同,几乎看起来有些混乱的背面剔除。

作为参考,我确保:

  • 禁用背面剔除
  • PNG纹理具有透明背景
  • 启用Alpha混合

第一张和第三张图片来自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);

知道可能是什么问题吗?

View in Assimp Model Viewer

View in Blender

View of transparent staff

0 个答案:

没有答案