OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 12 matching lines...) Expand all Loading... |
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 */ | 24 */ |
25 | 25 |
26 #include "config.h" | 26 #include "config.h" |
27 | 27 |
28 #include "core/html/canvas/OESVertexArrayObject.h" | 28 #include "core/html/canvas/OESVertexArrayObject.h" |
29 | 29 |
30 #include "bindings/v8/ExceptionState.h" | 30 #include "bindings/v8/ExceptionState.h" |
31 #include "core/html/canvas/WebGLRenderingContext.h" | 31 #include "core/html/canvas/WebGLRenderingContext.h" |
32 #include "core/html/canvas/WebGLVertexArrayObjectOES.h" | 32 #include "core/html/canvas/WebGLVertexArrayObjectOES.h" |
33 #include "platform/graphics/Extensions3D.h" | |
34 | 33 |
35 namespace WebCore { | 34 namespace WebCore { |
36 | 35 |
37 OESVertexArrayObject::OESVertexArrayObject(WebGLRenderingContext* context) | 36 OESVertexArrayObject::OESVertexArrayObject(WebGLRenderingContext* context) |
38 : WebGLExtension(context) | 37 : WebGLExtension(context) |
39 { | 38 { |
40 ScriptWrappable::init(this); | 39 ScriptWrappable::init(this); |
41 context->graphicsContext3D()->extensions()->ensureEnabled("GL_OES_vertex_arr
ay_object"); | 40 context->graphicsContext3D()->ensureExtensionEnabled("GL_OES_vertex_array_ob
ject"); |
42 } | 41 } |
43 | 42 |
44 OESVertexArrayObject::~OESVertexArrayObject() | 43 OESVertexArrayObject::~OESVertexArrayObject() |
45 { | 44 { |
46 } | 45 } |
47 | 46 |
48 WebGLExtension::ExtensionName OESVertexArrayObject::name() const | 47 WebGLExtension::ExtensionName OESVertexArrayObject::name() const |
49 { | 48 { |
50 return OESVertexArrayObjectName; | 49 return OESVertexArrayObjectName; |
51 } | 50 } |
(...skipping 25 matching lines...) Expand all Loading... |
77 } | 76 } |
78 | 77 |
79 GLboolean OESVertexArrayObject::isVertexArrayOES(WebGLVertexArrayObjectOES* arra
yObject) | 78 GLboolean OESVertexArrayObject::isVertexArrayOES(WebGLVertexArrayObjectOES* arra
yObject) |
80 { | 79 { |
81 if (!arrayObject || isLost()) | 80 if (!arrayObject || isLost()) |
82 return 0; | 81 return 0; |
83 | 82 |
84 if (!arrayObject->hasEverBeenBound()) | 83 if (!arrayObject->hasEverBeenBound()) |
85 return 0; | 84 return 0; |
86 | 85 |
87 Extensions3D* extensions = m_context->graphicsContext3D()->extensions(); | 86 return m_context->webGraphicsContext3D()->isVertexArrayOES(arrayObject->obje
ct()); |
88 return extensions->isVertexArrayOES(arrayObject->object()); | |
89 } | 87 } |
90 | 88 |
91 void OESVertexArrayObject::bindVertexArrayOES(WebGLVertexArrayObjectOES* arrayOb
ject) | 89 void OESVertexArrayObject::bindVertexArrayOES(WebGLVertexArrayObjectOES* arrayOb
ject) |
92 { | 90 { |
93 if (isLost()) | 91 if (isLost()) |
94 return; | 92 return; |
95 | 93 |
96 if (arrayObject && (arrayObject->isDeleted() || !arrayObject->validate(0, co
ntext()))) { | 94 if (arrayObject && (arrayObject->isDeleted() || !arrayObject->validate(0, co
ntext()))) { |
97 m_context->graphicsContext3D()->synthesizeGLError(GL_INVALID_OPERATION); | 95 m_context->webGraphicsContext3D()->synthesizeGLError(GL_INVALID_OPERATIO
N); |
98 return; | 96 return; |
99 } | 97 } |
100 | 98 |
101 Extensions3D* extensions = m_context->graphicsContext3D()->extensions(); | |
102 if (arrayObject && !arrayObject->isDefaultObject() && arrayObject->object())
{ | 99 if (arrayObject && !arrayObject->isDefaultObject() && arrayObject->object())
{ |
103 extensions->bindVertexArrayOES(arrayObject->object()); | 100 m_context->webGraphicsContext3D()->bindVertexArrayOES(arrayObject->objec
t()); |
104 | 101 |
105 arrayObject->setHasEverBeenBound(); | 102 arrayObject->setHasEverBeenBound(); |
106 m_context->setBoundVertexArrayObject(arrayObject); | 103 m_context->setBoundVertexArrayObject(arrayObject); |
107 } else { | 104 } else { |
108 extensions->bindVertexArrayOES(0); | 105 m_context->webGraphicsContext3D()->bindVertexArrayOES(0); |
109 m_context->setBoundVertexArrayObject(0); | 106 m_context->setBoundVertexArrayObject(0); |
110 } | 107 } |
111 } | 108 } |
112 | 109 |
113 bool OESVertexArrayObject::supported(WebGLRenderingContext* context) | 110 bool OESVertexArrayObject::supported(WebGLRenderingContext* context) |
114 { | 111 { |
115 Extensions3D* extensions = context->graphicsContext3D()->extensions(); | 112 return context->graphicsContext3D()->supportsExtension("GL_OES_vertex_array_
object"); |
116 return extensions->supports("GL_OES_vertex_array_object"); | |
117 } | 113 } |
118 | 114 |
119 const char* OESVertexArrayObject::extensionName() | 115 const char* OESVertexArrayObject::extensionName() |
120 { | 116 { |
121 return "OES_vertex_array_object"; | 117 return "OES_vertex_array_object"; |
122 } | 118 } |
123 | 119 |
124 } // namespace WebCore | 120 } // namespace WebCore |
OLD | NEW |