@@ -219,6 +219,41 @@ namespace endor
219219 kExtMaxViewsOvr = WEBGL2_EXT_MAX_VIEWS_OVR,
220220 };
221221
222+ /* *
223+ * Enum for buffer/object binding parameters that return WebGL objects.
224+ */
225+ enum class WebGLBufferBindingParameterName
226+ {
227+ kArrayBufferBinding = WEBGL_ARRAY_BUFFER_BINDING,
228+ kElementArrayBufferBinding = WEBGL_ELEMENT_ARRAY_BUFFER_BINDING,
229+ };
230+
231+ enum class WebGLObjectBindingParameterName
232+ {
233+ kCurrentProgram = WEBGL_CURRENT_PROGRAM,
234+ kFramebufferBinding = WEBGL_FRAMEBUFFER_BINDING,
235+ kRenderbufferBinding = WEBGL_RENDERBUFFER_BINDING,
236+ };
237+
238+ enum class WebGL2BufferBindingParameterName
239+ {
240+ kCopyReadBufferBinding = WEBGL2_COPY_READ_BUFFER_BINDING,
241+ kCopyWriteBufferBinding = WEBGL2_COPY_WRITE_BUFFER_BINDING,
242+ kPixelPackBufferBinding = WEBGL2_PIXEL_PACK_BUFFER_BINDING,
243+ kPixelUnpackBufferBinding = WEBGL2_PIXEL_UNPACK_BUFFER_BINDING,
244+ kTransformFeedbackBufferBinding = WEBGL2_TRANSFORM_FEEDBACK_BUFFER_BINDING,
245+ kUniformBufferBinding = WEBGL2_UNIFORM_BUFFER_BINDING,
246+ };
247+
248+ enum class WebGL2ObjectBindingParameterName
249+ {
250+ kDrawFramebufferBinding = WEBGL2_DRAW_FRAMEBUFFER_BINDING,
251+ kReadFramebufferBinding = WEBGL2_READ_FRAMEBUFFER_BINDING,
252+ kVertexArrayBinding = WEBGL2_VERTEX_ARRAY_BINDING,
253+ kSamplerBinding = WEBGL2_SAMPLER_BINDING,
254+ kTransformFeedbackBinding = WEBGL2_TRANSFORM_FEEDBACK_BINDING,
255+ };
256+
222257 class ContextAttributes final
223258 {
224259 public:
@@ -464,6 +499,10 @@ namespace endor
464499 bool getParameter (WebGLBooleanIndexedParameterName pname, int index);
465500 float getParameter (WebGLFloatArrayParameterName pname, int index);
466501 std::string getParameter (WebGLStringParameterName pname);
502+ std::shared_ptr<WebGLBuffer> getParameter (WebGLBufferBindingParameterName pname);
503+ std::shared_ptr<WebGLProgram> getParameterProgram (WebGLObjectBindingParameterName pname);
504+ std::shared_ptr<WebGLFramebuffer> getParameterFramebuffer (WebGLObjectBindingParameterName pname);
505+ std::shared_ptr<WebGLRenderbuffer> getParameterRenderbuffer (WebGLObjectBindingParameterName pname);
467506 WebGLShaderPrecisionFormat getShaderPrecisionFormat (int shadertype, int precisiontype);
468507 int getError ();
469508 std::vector<std::string> &getSupportedExtensions ();
@@ -918,6 +957,9 @@ namespace endor
918957 std::optional<int > length = std::nullopt );
919958 int getFragDataLocation (std::shared_ptr<WebGLProgram> program, const std::string &name);
920959 int getParameterV2 (WebGL2IntegerParameterName pname);
960+ std::shared_ptr<WebGLBuffer> getParameterV2 (WebGL2BufferBindingParameterName pname);
961+ std::shared_ptr<WebGLFramebuffer> getParameterFramebufferV2 (WebGL2ObjectBindingParameterName pname);
962+ std::shared_ptr<WebGLVertexArray> getParameterVertexArrayV2 (WebGL2ObjectBindingParameterName pname);
921963 std::shared_ptr<WebGLQuery> getQuery (WebGLQueryTarget target, int pname);
922964 int getUniformBlockIndex (std::shared_ptr<WebGLProgram> program, const std::string &uniformBlockName);
923965
0 commit comments