Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I blend two textures with different co-ordinates in OpenGL ES 2.0 on iPhone?
    primarykey
    data
    text
    <p>I can blend two textures with different blending modes in the fragment shader when both the textures covers the same rectangles. But now my problem is, one texture is a plain rectangle with no rotation and the other texture is another rectangle with a rotation/scale and translation. How do I merge these textures in the way I want? (In the picture)</p> <p>I know how to do this...</p> <p><img src="https://i.stack.imgur.com/CZSa6.png" alt="enter image description here"></p> <p>But not sure how to do this...</p> <p><img src="https://i.stack.imgur.com/2yfyN.png" alt="enter image description here"></p> <p>For blending textures in one rectangle (the first image), I used the following code..</p> <p>Objective C code...</p> <pre><code>- (void) display { [EAGLContext setCurrentContext:context]; glBindFramebuffer(GL_FRAMEBUFFER, targetFBO); glUseProgram(program); glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, textureTop); glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, textureBot); glUniform1i(inputTextureTop, 2); glUniform1i(inputTextureBot, 3); glUniform1f(alphaTop, alpha); glEnable (GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glVertexAttribPointer(position, 2, GL_FLOAT, 0, 0, imageVertices); glVertexAttribPointer(inputTextureCoordinate, 2, GL_FLOAT, 0, 0, textureCoordinates); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); [context presentRenderbuffer:GL_RENDERBUFFER]; } </code></pre> <p>Vertex shader...</p> <pre><code> attribute vec4 position; attribute vec4 inputTextureCoordinate; varying vec2 textureCoordinate; void main() { gl_Position = position; textureCoordinate = inputTextureCoordinate.xy; } </code></pre> <p>Fragment shader...</p> <pre><code>varying highp vec2 textureCoordinate; uniform sampler2D inputTextureTop; uniform sampler2D inputTextureBot; uniform highp float alphaTop; void main() { lowp vec4 pixelTop = texture2D(inputTextureTop, textureCoordinate); lowp vec4 pixelBot = texture2D(inputTextureBot, textureCoordinate); gl_FragColor = someBlendOperation(pixelTop, pixelBot); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload