void WebGLContext::DeleteVertexArray(WebGLVertexArray* array) { if (!ValidateDeleteObject("deleteVertexArray", array)) return; if (mBoundVertexArray == array) BindVertexArray(static_cast<WebGLVertexArray*>(nullptr)); array->RequestDelete(); }
void WebGLContext::DeleteVertexArray(WebGLVertexArray* array) { const FuncScope funcScope(*this, "deleteVertexArray"); if (!ValidateDeleteObject(array)) return; if (mBoundVertexArray == array) BindVertexArray(static_cast<WebGLVertexArray*>(nullptr)); array->RequestDelete(); }
void WebGLContext::DeleteQuery(WebGLQuery* query, const char* funcName) { if (!funcName) { funcName = "deleteQuery"; } if (!ValidateDeleteObject(funcName, query)) return; query->DeleteQuery(); }
void WebGLContext::DeleteBuffer(WebGLBuffer* buffer) { const FuncScope funcScope(*this, "deleteBuffer"); if (!ValidateDeleteObject(buffer)) return; //// const auto fnClearIfBuffer = [&](GLenum target, WebGLRefPtr<WebGLBuffer>& bindPoint) { if (bindPoint == buffer) { WebGLBuffer::SetSlot(target, nullptr, &bindPoint); } }; fnClearIfBuffer(0, mBoundArrayBuffer); fnClearIfBuffer(0, mBoundVertexArray->mElementArrayBuffer); for (auto& cur : mBoundVertexArray->mAttribs) { fnClearIfBuffer(0, cur.mBuf); } // WebGL binding points if (IsWebGL2()) { fnClearIfBuffer(0, mBoundCopyReadBuffer); fnClearIfBuffer(0, mBoundCopyWriteBuffer); fnClearIfBuffer(0, mBoundPixelPackBuffer); fnClearIfBuffer(0, mBoundPixelUnpackBuffer); fnClearIfBuffer(0, mBoundUniformBuffer); fnClearIfBuffer(LOCAL_GL_TRANSFORM_FEEDBACK_BUFFER, mBoundTransformFeedbackBuffer); if (!mBoundTransformFeedback->mIsActive) { for (auto& binding : mBoundTransformFeedback->mIndexedBindings) { fnClearIfBuffer(LOCAL_GL_TRANSFORM_FEEDBACK_BUFFER, binding.mBufferBinding); } } for (auto& binding : mIndexedUniformBufferBindings) { fnClearIfBuffer(0, binding.mBufferBinding); } } //// buffer->RequestDelete(); }
void WebGL2Context::DeleteTransformFeedback(WebGLTransformFeedback* tf) { const char funcName[] = "deleteTransformFeedback"; if (!ValidateDeleteObject(funcName, tf)) return; if (tf->mIsActive) { ErrorInvalidOperation("%s: Cannot delete active transform feedbacks.", funcName); return; } if (mBoundTransformFeedback == tf) { BindTransformFeedback(LOCAL_GL_TRANSFORM_FEEDBACK, nullptr); } tf->RequestDelete(); }
void WebGLContext::DeleteQuery(WebGLQuery* query) { const FuncScope funcScope(*this, "deleteQuery"); if (!ValidateDeleteObject(query)) return; query->DeleteQuery(); }