> GLES20.glUniform1i(mTexSamplerHandle, 0); > > I would think it should be: > > GLES20.glUniform1i(mTexSamplerHandle, texId); > > But that doesn't work. > > Can someone help me understand this line? >
Each GPU has multiple texture units (at least 8 as required by GL ES 2.0 specification), sampler2D (and other samplers type) are used to reference texture unit in shader languages, therefore you set it to texture unit id ordinal (unitId - GL_TEXTURE0), texture is bound on client side by selecting texture unit, with call to glActiveTexture and then with glBindTexture, which binds texture name to given sample type (eg. sampler2D with GL_TEXTURE_2D) on currently selected texture unit. So to pass texture to shader you need to execute following sequence: GLES20.glActiveTexture(GL_TEXTURE0); // activate texture unit GLES20.glBindTexture(GL_TEXTURE_2D, textureName); // bind texture to 2D sampler on texture unit 0 /* setup progam, states etc... */ GLES20.glUniform1i(uniformLocationForSampler, 0); // pass texture unit ordinal to shader -- Bart -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

