我正在与高通公司增强现实FrameMarkers演示为iOS &切换到我们的3D人给我的模型(真的,他更多的是一个2D的家伙,这就是为什么我试图在代码端解决这个问题,而不是3D端)。问题在于关于纹理 - 演示假定2d图像纹理绑定到3d模型。然而,我们的3D人员已经将纹理构建到了对象本身中(例如程序纹理)。Opengl ES - 如何合并程序纹理
最初物体出现完全充满黑色&无法真正看到任何细节。我设法让这一点更好地从演示中删除这些行:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, [obj3D.texture textureID]);
果然一切实物条银白色的颜色&我现在可以看到一些细节&一些反射掉一些表面的(它应该是在实际的地方是半透明的,而不是纯粹的反射 - 所以这也是一个问题..)。
我在几个地方阅读,为了达到半透明性,这些命令是必需的;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
然而,对于我 - 他们只是把整个屏幕黑..
正确:
应用程式:
当你说他在模型本身构建了纹理时,他提供了什么样的表单?如果你想告诉我他已经转发的纹理,你会告诉我什么? Renderman着色代码,GLSL,HLSL,也许还有别的? – Tommy
嗨 - 三维模型作为wavefront .obj文件提供,通过标准的3DS设置生成;根据vuforia教程中关于切换其他3d模型,我通过perl转换器脚本(obj2opengl.pl)运行此obj,该脚本将obj文件转换为具有顶点数组,texcoords数组和法线数组的C头文件。 – Reece
所以你不再拥有纹理信息了? – Tommy