当前位置:  开发笔记 > 编程语言 > 正文

如何将2个或更多纹理贴图应用于gluSphere OpenGL对象?

如何解决《如何将2个或更多纹理贴图应用于gluSphereOpenGL对象?》经验,为你挑选了2个好方法。

我正在编写一个基本的行星查看器OpenGL Perl应用程序,只是为了好玩.我有基本的工作,与辉煌的星球,通过gluSphere()旋转与经典的地球纹理贴图应用.

现在,如果我想通过OpenGL应用第二个纹理贴图(比如"地球云")怎么办?

当然,我可以在PhotoShop或其他一些图形应用程序中自己混合两个纹理贴图,但有没有办法通过OpenGL API?

我尝试加载两个纹理并生成mipmap但是行星显示时只应用了第一个纹理,而不是第二个.



1> Jim Buck..:

你想如何组合你的纹理?如果您只是使用多纹理,您应该能够获得所需的效果:

glEnable(GL_TEXTURE_2D);

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture0ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture1ID);
glTexEnvf(GL_TEXTURE_ENV, ..., ...);

请务必根据您希望如何组合纹理来设置glTexEnvf调用.然后调用gluSphere().



2> Drew Hall..:

正如吉姆巴克所说,你可以通过多重纹理获得理想的效果.

但是,我不认为GLU二次曲面支持多纹理坐标生成(即使用glMultiTexCoord*()与glTexCoord*().所以,我认为你需要自己的球体代码来进行多重纹理路由.

或者,您可以在当前具有第二个纹理贴图的周围绘制稍大的球体(适当使用Alpha通道和混合).这可能会导致z-fighting,所以它可能比它的价值更麻烦.

编写自己的球体代码并不难 - 可能是获得满意结果的最简单途径.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有