OpenGL:GL_REPEAT和GL_CLAMP_TO_EDGE

时间:2012-12-17 14:03:49

标签: opengl

我正在使用OGL 3.2处理我的游戏项目,我在纹理参数中使用GL_REPEAT通过定义超过(1; 1)的ST坐标来非常快速地设置我的地形。但是现在,当我添加了一个天空盒时,天空盒纹理之间的边缘看起来非常沙哑,我不希望它们。我可以使用GL_CLAMP_TO_EDGE参数删除它们,但如果没有GL_REPEAT参数,地形纹理会显示错误。因此,我必须在GL_REPEATGL_CLAMP_TO_EDGE之间进行选择。如果我将它切换到GL_CLAMP_TO_EDGE我不能使用GL_REPEAT优势并且必须将我的地形划分为更小的块并逐个给出纹理,这在(在我看来)非常低效,尤其是当我想要大尺寸的地图时。

有没有办法同时使用GL_REPEATGL_CLAMP_TO_EDGE的两个优点,或者有更多可靠的解决方法,我不知道?

1 个答案:

答案 0 :(得分:5)

您可以同时使用两者。纹理包装模式存储在每个纹理的基础上,因此使用GL_REPEAT作为地面纹理,使用GL_CLAMP_TO_EDGE作为天空纹理。

在上传纹理图像后立即(或紧接着纹理被绑定之前)立即为每个纹理设置它。