4
glActiveTexture和glBindTexture之间的区别和关系
根据我的收集,glActiveTexture设置活动的“纹理单位”。每个纹理单元可以具有多个纹理目标(通常为GL_TEXTURE_1D,2D,3D或CUBE_MAP)。 如果我理解正确,您必须先调用glActiveTexture设置纹理单元(初始化为GL_TEXTURE0),然后将(一个或多个)“纹理目标”绑定到该纹理单元? 可用的纹理单位数量取决于系统。我在库中最多看到32个枚举。我想这实质上意味着我可以减少GPU的限制(我认为这是168)是否可以同时在GPU内存中添加32个纹理?我猜还有一个额外的限制,那就是我不超过GPU的最大内存(据说是1 GB)。 我是否正确理解纹理目标和纹理单位之间的关系?假设我被允许16个单位和4个目标,这是否意味着16 * 4 = 64个目标有空间,还是不能那样工作? 接下来,您通常要加载纹理。您可以通过进行此操作glTexImage2D。其第一个参数是纹理目标。如果这类似于glBufferData,则我们实质上将“句柄” /“纹理名称”绑定到纹理目标,然后将纹理数据加载到该目标中,从而将其与该句柄间接关联。 那glTexParameter呢 我们必须绑定一个纹理目标,然后再次选择相同的目标作为第一个参数?还是只要我们具有正确的活动纹理单位,就不需要绑定纹理目标? glGenerateMipmap 也可以在目标上操作...该目标是否仍必须绑定到纹理名称才能成功? 然后,当我们想在其上绘制带有纹理的对象时,是否必须同时选择一个活动的纹理单位和一个纹理目标?还是选择纹理单元,然后可以从与该单元关联的4个目标中的任意一个获取数据?这部分确实让我感到困惑。