Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: Source/core/html/canvas/WebGL2RenderingContextBase.h

Issue 894143002: Adding Blink bindings for WebGL 2 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Updating objects to use the correct Oilpan transition types. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef WebGL2RenderingContextBase_h
6 #define WebGL2RenderingContextBase_h
7
8 #include "core/html/canvas/WebGLExtension.h"
9 #include "core/html/canvas/WebGLRenderingContextBase.h"
10 #include "wtf/PassRefPtr.h"
11
12 namespace blink {
13
14 class WebGLTexture;
15
16 class WebGLActiveInfo;
17 class WebGLBuffer;
18 class WebGLProgram;
19 class WebGLQuery;
20 class WebGLSampler;
21 class WebGLSync;
22 class WebGLTransformFeedback;
23 class WebGLUniformLocation;
24 class WebGLVertexArrayObject;
25
26 class WebGL2RenderingContextBase : public WebGLRenderingContextBase {
27 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WebGL2RenderingContextBase);
28 public:
29 virtual ~WebGL2RenderingContextBase();
30
31 /* Buffer objects */
32 void copyBufferSubData(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
33
Ken Russell (switch to Gerrit) 2015/02/03 01:23:24 Please add TODO about adding getBufferSubData.
34 /* Framebuffer objects */
35 void blitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
36 void framebufferTextureLayer(GLenum, GLenum, const WebGLTexture*, GLint, GLi nt);
37 ScriptValue getInternalformatParameter(ScriptState*, GLenum, GLenum, GLenum) ;
38 void invalidateFramebuffer(GLenum, Vector<GLenum>&);
39 void invalidateSubFramebuffer(GLenum, Vector<GLenum>&, GLint, GLint, GLsizei , GLsizei);
40 void readBuffer(GLenum);
41 void renderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsize i);
42
43 /* Texture objects */
44 void texStorage2D(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
45 void texStorage3D(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
46 void texImage3D(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLen um, GLenum, DOMArrayBufferView*);
47 void texSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLs izei, GLenum, GLenum, DOMArrayBufferView*);
48 void texSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, Image Data*);
49 void texSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, HTMLI mageElement*);
50 void texSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, HTMLC anvasElement*);
51 void texSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, HTMLV ideoElement*);
52 void copyTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLs izei, GLsizei);
53 void compressedTexImage3D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, DOMArrayBufferView*);
54 void compressedTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GL sizei, GLsizei, GLenum, GLsizei, DOMArrayBufferView*);
55
56 /* Programs and shaders */
57 GLint getFragDataLocation(WebGLProgram*, const String&);
58
59 void uniform1ui(const WebGLUniformLocation*, GLuint);
60 void uniform2ui(const WebGLUniformLocation*, GLuint, GLuint);
61 void uniform3ui(const WebGLUniformLocation*, GLuint, GLuint, GLuint);
62 void uniform4ui(const WebGLUniformLocation*, GLuint, GLuint, GLuint, GLuint) ;
63 void uniform1uiv(const WebGLUniformLocation*, Vector<GLuint>&);
64 void uniform2uiv(const WebGLUniformLocation*, Vector<GLuint>&);
65 void uniform3uiv(const WebGLUniformLocation*, Vector<GLuint>&);
66 void uniform4uiv(const WebGLUniformLocation*, Vector<GLuint>&);
67 void uniformMatrix2x3fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
68 void uniformMatrix2x3fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
69 void uniformMatrix3x2fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
70 void uniformMatrix3x2fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
71 void uniformMatrix2x4fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
72 void uniformMatrix2x4fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
73 void uniformMatrix4x2fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
74 void uniformMatrix4x2fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
75 void uniformMatrix3x4fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
76 void uniformMatrix3x4fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
77 void uniformMatrix4x3fv(const WebGLUniformLocation*, GLboolean, DOMFloat32Ar ray*);
78 void uniformMatrix4x3fv(const WebGLUniformLocation*, GLboolean, Vector<GLflo at>&);
79
80 void vertexAttribI4i(GLuint, GLint, GLint, GLint, GLint);
81 void vertexAttribI4iv(GLuint, const Vector<GLint>&);
82 void vertexAttribI4ui(GLuint, GLuint, GLuint, GLuint, GLuint);
83 void vertexAttribI4uiv(GLuint, const Vector<GLuint>&);
84 void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei str ide, GLintptr offset);
85
86 /* Writing to the drawing buffer */
87 void vertexAttribDivisor(GLuint, GLuint);
88 void drawArraysInstanced(GLenum, GLint, GLsizei, GLsizei);
89 void drawElementsInstanced(GLenum, GLsizei, GLenum, GLintptr, GLsizei);
90
91 /* Multiple Render Targets */
92 void drawBuffers(const Vector<GLenum>&);
93 void clearBufferiv(GLenum, GLint, DOMInt32Array*);
94 void clearBufferiv(GLenum, GLint, const Vector<GLint>&);
95 void clearBufferuiv(GLenum, GLint, DOMUint32Array*);
96 void clearBufferuiv(GLenum, GLint, const Vector<GLuint>&);
97 void clearBufferfv(GLenum, GLint, DOMFloat32Array*);
98 void clearBufferfv(GLenum, GLint, const Vector<GLfloat>&);
99 void clearBufferfi(GLenum, GLint, GLfloat, GLint);
100
101 /* Query Objects */
102 PassRefPtr<WebGLQuery> createQuery();
103 void deleteQuery(WebGLQuery*);
104 GLboolean isQuery(WebGLQuery*);
105 void beginQuery(GLenum, WebGLQuery*);
106 void endQuery(GLenum);
107 PassRefPtr<WebGLQuery> getQuery(GLenum, GLenum);
108 ScriptValue getQueryParameter(ScriptState*, WebGLQuery*, GLenum);
109
110 /* Sampler Objects */
111 PassRefPtr<WebGLSampler> createSampler();
112 void deleteSampler(WebGLSampler*);
113 GLboolean isSampler(WebGLSampler*);
114 void bindSampler(GLuint, WebGLSampler*);
115 void samplerParameteri(WebGLSampler*, GLenum, GLint);
116 void samplerParameteriv(WebGLSampler*, GLenum, DOMInt32Array*);
117 void samplerParameteriv(WebGLSampler*, GLenum, const Vector<GLint>&);
118 void samplerParameterf(WebGLSampler*, GLenum, GLfloat);
119 void samplerParameterfv(WebGLSampler*, GLenum, DOMFloat32Array*);
120 void samplerParameterfv(WebGLSampler*, GLenum, const Vector<GLfloat>&);
121
122 ScriptValue getSamplerParameter(ScriptState*, WebGLSampler*, GLenum);
123
124 /* Sync objects */
125 PassRefPtr<WebGLSync> fenceSync(GLenum, GLbitfield);
126 GLboolean isSync(WebGLSync*);
127 void deleteSync(WebGLSync*);
128 GLenum clientWaitSync(WebGLSync*, GLbitfield, GLuint);
129 void waitSync(WebGLSync*, GLbitfield, GLuint);
130
131 ScriptValue getSyncParameter(ScriptState*, WebGLSync*, GLenum);
132
133 /* Transform Feedback */
134 PassRefPtr<WebGLTransformFeedback> createTransformFeedback();
135 void deleteTransformFeedback(WebGLTransformFeedback*);
136 GLboolean isTransformFeedback(WebGLTransformFeedback*);
137 void bindTransformFeedback(GLenum, WebGLTransformFeedback*);
138 void beginTransformFeedback(GLenum);
139 void endTransformFeedback();
140 void transformFeedbackVaryings(WebGLProgram*, GLsizei, const Vector<String>& , GLenum);
141 PassRefPtr<WebGLActiveInfo> getTransformFeedbackVarying(WebGLProgram*, GLuin t);
142 void pauseTransformFeedback();
143 void resumeTransformFeedback();
144
145 /* Uniform Buffer Objects and Transform Feedback Buffers */
146 void bindBufferBase(GLenum, GLuint, WebGLBuffer*);
147 void bindBufferRange(GLenum, GLuint, WebGLBuffer*, GLintptr, GLsizeiptr);
148 ScriptValue getIndexedParameter(ScriptState*, GLenum, GLuint);
149 Vector<GLuint> getUniformIndices(WebGLProgram*, const Vector<String>&);
150 Vector<GLint> getActiveUniforms(WebGLProgram*, const Vector<GLuint>&, GLenum );
151 GLuint getUniformBlockIndex(WebGLProgram*, const String&);
152 ScriptValue getActiveUniformBlockParameter(ScriptState*, WebGLProgram*, GLui nt, GLenum);
153 String getActiveUniformBlockName(WebGLProgram*, GLuint);
154 void uniformBlockBinding(WebGLProgram*, GLuint, GLuint);
155
156 /* Vertex Array Objects */
157 PassRefPtr<WebGLVertexArrayObjectOES> createVertexArray();
158 void deleteVertexArray(WebGLVertexArrayObjectOES*);
159 GLboolean isVertexArray(WebGLVertexArrayObjectOES*);
160 void bindVertexArray(WebGLVertexArrayObjectOES*);
161
162 void trace(Visitor*) override;
163
164 protected:
165 WebGL2RenderingContextBase(HTMLCanvasElement*, PassOwnPtr<blink::WebGraphics Context3D>, const WebGLContextAttributes& requestedAttributes);
166
167 bool validateClearBuffer(const char* functionName, GLenum buffer, GLsizei le ngth);
168 };
169
170 DEFINE_TYPE_CASTS(WebGL2RenderingContextBase, CanvasRenderingContext, context,
171 context->is3d() && WebGLRenderingContextBase::getWebGLVersion(context) >= 2,
172 context.is3d() && WebGLRenderingContextBase::getWebGLVersion(&context) >= 2) ;
173
174 } // namespace blink
175
176 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698