是否需要为GL_TEXTURE_2D的每个绑定设置纹理参数?

时间:2017-12-14 03:53:46

标签: opengl

我正在阅读一些基本的opengl教程,并想知道这段代码是否可以做得更好。

我的问题是在c ++中,但我相信这会延续到不同语言的任何其他opengl实现。

以下是代码:

glGenTextures(1, &texture1);
glBindTexture(GL_TEXTURE_2D, texture1);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//load the data for the texture, apply it, the free the data

glGenTextures(1, &texture2);
glBindTexture(GL_TEXTURE_2D, texture2);
//Now the question.

绑定texture2之后,如果我想对两个图像产生相同的效果,是否需要重复glTexParameteri行?

1 个答案:

答案 0 :(得分:2)

纹理参数是纹理对象状态的一部分。设置纹理参数时,您需要在该对象中设置状态。所以你的问题大致相当于"如果我x.v = 5;,那么如果y.vx属于同一类型,那么y是否也是5?&# 34;

当您将对象绑定到上下文然后在该绑定点上调用状态设置函数时,您将在对象中设置状态,就像x.v = 5将状态设置为对象x一样。对于这个概念,OpenGL只是有一个不寻常的拼写(有时,如果一个函数将状态设置为一个对象或上下文,如果不查找它就很难知道),但这两种方式都是相同的。

所以不,在一个对象上设置状态不会将该状态转移到另一个恰好碰巧绑定到该绑定点的状态。