opengles纹理单位行为

时间:2014-01-16 09:14:36

标签: opengl-es textures

新手问题......与OpenGLES 2.0 + Android相关

1)是否在drawarrays调用中保留了上传的纹理和状态? 当我们使用glTexImage2D为一个活动的Texture5上传纹理时(比方说),即使另一个GL上下文使用Texture5并上传另一个纹理,它仍会存在吗? 如果是这样,它将为我在两个视频帧之间的操作节省相当多的考验。

2)如果我将textureobjectA绑定到活动的Texture5并上传纹理,如果我将textureobjectB绑定到活动的Texture5并将其他一些数据上传到它,它会被覆盖吗?

3)激活Texture5相当于激活纹理硬件单元还是只是状态激活?我问这个是因为,如果另一个上下文激活同一个单元可能会出现问题,这导致我认为它只是一个状态激活。 如果是这样,GPU中所有上下文和纹理上传可用的内存是多少?

欣赏任何回复

1 个答案:

答案 0 :(得分:0)

您对active Texture一词的使用令人担忧。您不会将纹理上传到纹理单元,而是将纹理对象绑定到它们。您将纹理图像数据上传到纹理对象。

现在,如果您询问在一个上下文中绑定到纹理图像单元5的纹理是否影响另一个,则答案绝对不是。即使使用上下文资源共享,每个上下文都有自己独立的纹理图像单元集(因为每个上下文都有自己的状态机)。

“激活”纹理单元仅仅是OpenGL可疑设计的结果,您必须使用选择器函数来指示下一个命令适用于哪个对象。例如,它不会告诉glTexImage2D (...),它适用于当前绑定到活动纹理图像单元的2D纹理。