我正在写一个基本的星球观众OpenGL的Perl应用程序,只是为了好玩。 我有基本工作,与光荣行星,通过gluSphere()实现,应用了经典的地球纹理地图旋转。

现在,如果我想通过OpenGL的应用第二纹理贴图(比方说,“地球云”)?

当然,我可以混合两个纹理映射自己在PhotoShop或某些其它图形应用程序,但有通过的OpenGL API的方法吗?

我试图加载两个纹理和生成的mipmap但行星被示出具有仅第一纹理施加,而不是第二

有帮助吗?

解决方案

吉姆巴克说,就可以得到与多纹理期望的效果。

不过,我不认为GLU二次曲面支持多重纹理使用glMultiTexCoord *()与glTexCoord *()坐标生成(即,所以,我想你会需要你自己的领域的代码走多重纹理路线。

另外,你也许能画一个稍微大一点的球在你目前的一个上有第二个纹理贴图(正当使用alpha通道和混合的)脱身。这可能会导致虽然Z-战斗,所以它可能是更多的麻烦比它的价值。

编写自己的球代码并不难 - 可能是最容易的路线得到满意的结果。

其他提示

如何要结合你的纹理?你应该可以,如果你只是使用多纹理来获得你想要的效果:

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()。

我同意德鲁霍尔。也许简单的方式,第二球。而且也不是所有的OpenGL卡支持多纹理。

可以对抗与glPolygonOffset Z-战斗。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top