我在opengl中使用五个四边形上的五个纹理制作了一个天空盒,问题是纹理之间的线条(边界)是可见的:
你是怎么摆脱这些线的?
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0.0f, 1.0f);
GL11.glVertex3f(-15.0f,-14.0f,-15.0f);
GL11.glTexCoord2f(1f, 1.0f);
GL11.glVertex3f(15.0f,-14.0f,-15.0f);
GL11.glTexCoord2f(1f, 0f);
GL11.glVertex3f(15.0f,16.0f,-15.0f);
GL11.glTexCoord2f(0.0f, 0f);
GL11.glVertex3f(-15.0f,16.0f,-15.0f);
GL11.glEnd();
这是一个四分之一的天空盒,它应该做不同的?
2条答案
按热度按时间lsmd5eda1#
我有同样的问题,直到我设置的 Package 模式GL_CLAMP_TO_EDGE。将图像数据提供给着色器后,将此代码放入,似乎应该消失:
sbdsn5lh2#
我在OpenSceneGraph中遇到了同样的问题,并采用了OpenGL解决方案,这应该是非常简单的。基本上只要在你的程序开始渲染循环之前使用
glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS)
就可以了,这样行就应该消失了。在我的研究中有一些模糊之处,有可能枚举实际上是
GL_TEXTURE_CUBEMAP_SEAMLESS
,但其中一个应该适合您。在OSG中,这有点复杂,因为您需要#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
,然后使用state->setMode(GL_TEXTURE_CUBE_MAP_SEAMLESS, osg::StateAttribute::ON)
启用无缝立方体Map,其中state是从场景图的根设置的状态。我希望这对你有帮助,它对我有用。