Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/gl_renderer.h" | 5 #include "cc/gl_renderer.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/string_split.h" | 9 #include "base/string_split.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 929 | 929 |
| 930 void GLRenderer::drawStreamVideoQuad(const DrawingFrame& frame, const StreamVide oDrawQuad* quad) | 930 void GLRenderer::drawStreamVideoQuad(const DrawingFrame& frame, const StreamVide oDrawQuad* quad) |
| 931 { | 931 { |
| 932 static float glMatrix[16]; | 932 static float glMatrix[16]; |
| 933 | 933 |
| 934 DCHECK(m_capabilities.usingEglImage); | 934 DCHECK(m_capabilities.usingEglImage); |
| 935 | 935 |
| 936 const VideoStreamTextureProgram* program = videoStreamTextureProgram(); | 936 const VideoStreamTextureProgram* program = videoStreamTextureProgram(); |
| 937 setUseProgram(program->program()); | 937 setUseProgram(program->program()); |
| 938 | 938 |
| 939 toGLMatrix(&glMatrix[0], quad->matrix); | 939 if (quad->texture_id == 0) { |
| 940 GLC(context(), context()->uniformMatrix4fv(program->vertexShader().texMatrix Location(), 1, false, glMatrix)); | 940 // When texture_id == 0, punch a hole instead of rendering. |
| 941 GLC(m_context, m_context->blendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA)); | |
| 942 drawQuadGeometry(frame, quad->quadTransform(), quad->rect, program->vert exShader().matrixLocation()); | |
| 943 GLC(m_context, m_context->blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)); | |
| 944 } else { | |
|
danakj
2012/12/13 05:35:42
if you return at the end of the if() then you don'
wonsik2
2012/12/17 04:36:05
Done.
| |
| 945 toGLMatrix(&glMatrix[0], quad->matrix); | |
| 946 GLC(context(), context()->uniformMatrix4fv(program->vertexShader().texMa trixLocation(), 1, false, glMatrix)); | |
| 941 | 947 |
| 942 GLC(context(), context()->bindTexture(GL_TEXTURE_EXTERNAL_OES, quad->texture _id)); | 948 GLC(context(), context()->bindTexture(GL_TEXTURE_EXTERNAL_OES, quad->tex ture_id)); |
| 943 | 949 |
| 944 GLC(context(), context()->uniform1i(program->fragmentShader().samplerLocatio n(), 0)); | 950 GLC(context(), context()->uniform1i(program->fragmentShader().samplerLoc ation(), 0)); |
| 945 | 951 |
| 946 setShaderOpacity(quad->opacity(), program->fragmentShader().alphaLocation()) ; | 952 setShaderOpacity(quad->opacity(), program->fragmentShader().alphaLocatio n()); |
| 947 drawQuadGeometry(frame, quad->quadTransform(), quad->rect, program->vertexSh ader().matrixLocation()); | 953 drawQuadGeometry(frame, quad->quadTransform(), quad->rect, program->vert exShader().matrixLocation()); |
| 954 } | |
| 948 } | 955 } |
| 949 | 956 |
| 950 struct TextureProgramBinding { | 957 struct TextureProgramBinding { |
| 951 template<class Program> void set( | 958 template<class Program> void set( |
| 952 Program* program, WebKit::WebGraphicsContext3D* context) | 959 Program* program, WebKit::WebGraphicsContext3D* context) |
| 953 { | 960 { |
| 954 DCHECK(program && (program->initialized() || context->isContextLost())); | 961 DCHECK(program && (program->initialized() || context->isContextLost())); |
| 955 programId = program->program(); | 962 programId = program->program(); |
| 956 samplerLocation = program->fragmentShader().samplerLocation(); | 963 samplerLocation = program->fragmentShader().samplerLocation(); |
| 957 matrixLocation = program->vertexShader().matrixLocation(); | 964 matrixLocation = program->vertexShader().matrixLocation(); |
| (...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1746 | 1753 |
| 1747 releaseRenderPassTextures(); | 1754 releaseRenderPassTextures(); |
| 1748 } | 1755 } |
| 1749 | 1756 |
| 1750 bool GLRenderer::isContextLost() | 1757 bool GLRenderer::isContextLost() |
| 1751 { | 1758 { |
| 1752 return (m_context->getGraphicsResetStatusARB() != GL_NO_ERROR); | 1759 return (m_context->getGraphicsResetStatusARB() != GL_NO_ERROR); |
| 1753 } | 1760 } |
| 1754 | 1761 |
| 1755 } // namespace cc | 1762 } // namespace cc |
| OLD | NEW |