context3d_p.h 48.32 KiB
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCanvas3D module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free 
** Software Foundation and appearing in the file LICENSE.GPL included in 
** the packaging of this file.  Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
** $QT_END_LICENSE$
****************************************************************************/
//  W A R N I N G
//  -------------
// This file is not part of the QtCanvas3D API.  It exists purely as an
// implementation detail.  This header file may change from version to
// version without notice, or even be removed.
// We mean it.
#ifndef CONTEXT3D_P_H
#define CONTEXT3D_P_H
#include "canvas3dcommon_p.h"
#include "contextattributes_p.h"
#include <QtGui/QOpenGLFunctions>
#include <QString>
#include <QRect>
#include <QSize>
#include <QVariantList>
#include <QtQuick/QQuickItem>
#ifdef NO_ERROR // may de defined in winerror.h
#undef NO_ERROR
#endif
#define ENUM_AS_PROPERTY(A) Q_PROPERTY(CanvasContext::glEnums A READ A ## _read); inline CanvasContext::glEnums A ## _read() { return CanvasContext::A; }
class Canvas;
class CanvasActiveInfo;
class CanvasTexture;
class CanvasShader;
class CanvasFrameBuffer;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
class CanvasRenderBuffer; class CanvasProgram; class CanvasBuffer; class CanvasUniformLocation; class CanvasTextureImage; class CanvasArrayBufferView; class CanvasArrayBuffer; class CanvasFloat32Array; class CanvasInt32Array; class CanvasUint16Array; class CanvasUint8Array; class CanvasTypedArray; class CanvasShaderPrecisionFormat; class EnumToStringMap; class QT_CANVAS3D_EXPORT CanvasContext : public QObject, protected QOpenGLFunctions { Q_OBJECT Q_DISABLE_COPY(CanvasContext) Q_ENUMS(glEnums) Q_PROPERTY(Canvas *canvas READ canvas NOTIFY canvasChanged) Q_PROPERTY(uint drawingBufferWidth READ drawingBufferWidth NOTIFY drawingBufferWidthChanged) Q_PROPERTY(uint drawingBufferHeight READ drawingBufferHeight NOTIFY drawingBufferHeightChanged) Q_PROPERTY(bool logAllCalls READ logAllCalls WRITE setLogAllCalls NOTIFY logAllCallsChanged) Q_PROPERTY(bool logAllErrors READ logAllErrors WRITE setLogAllErrors NOTIFY logAllErrorsChanged) public: enum glEnums { /* ClearBufferMask */ DEPTH_BUFFER_BIT = 0x00000100, STENCIL_BUFFER_BIT = 0x00000400, COLOR_BUFFER_BIT = 0x00004000, // EXTRA DEPTH_AND_COLOR_BUFFER_BIT = 0x00004100, DEPTH_AND_STENCIL_AND_COLOR_BUFFER_BIT = 0x00004500, /* BeginMode */ POINTS = 0x0000, LINES = 0x0001, LINE_LOOP = 0x0002, LINE_STRIP = 0x0003, TRIANGLES = 0x0004, TRIANGLE_STRIP = 0x0005, TRIANGLE_FAN = 0x0006, /* AlphaFunction (not supported in ES20) */ /* NEVER */ /* LESS */ /* EQUAL */ /* LEQUAL */ /* GREATER */ /* NOTEQUAL */ /* GEQUAL */ /* ALWAYS */ /* BlendingFactorDest */ ZERO = 0, ONE = 1, SRC_COLOR = 0x0300, ONE_MINUS_SRC_COLOR = 0x0301, SRC_ALPHA = 0x0302, ONE_MINUS_SRC_ALPHA = 0x0303, DST_ALPHA = 0x0304, ONE_MINUS_DST_ALPHA = 0x0305, /* BlendingFactorSrc */
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
/* ZERO */ /* ONE */ DST_COLOR = 0x0306, ONE_MINUS_DST_COLOR = 0x0307, SRC_ALPHA_SATURATE = 0x0308, /* SRC_ALPHA */ /* ONE_MINUS_SRC_ALPHA */ /* DST_ALPHA */ /* ONE_MINUS_DST_ALPHA */ /* BlendEquationSeparate */ FUNC_ADD = 0x8006, BLEND_EQUATION = 0x8009, BLEND_EQUATION_RGB = 0x8009, /* same as BLEND_EQUATION */ BLEND_EQUATION_ALPHA = 0x883D, /* BlendSubtract */ FUNC_SUBTRACT = 0x800A, FUNC_REVERSE_SUBTRACT = 0x800B, /* Separate Blend Functions */ BLEND_DST_RGB = 0x80C8, BLEND_SRC_RGB = 0x80C9, BLEND_DST_ALPHA = 0x80CA, BLEND_SRC_ALPHA = 0x80CB, CONSTANT_COLOR = 0x8001, ONE_MINUS_CONSTANT_COLOR = 0x8002, CONSTANT_ALPHA = 0x8003, ONE_MINUS_CONSTANT_ALPHA = 0x8004, BLEND_COLOR = 0x8005, /* Buffer Objects */ ARRAY_BUFFER = 0x8892, ELEMENT_ARRAY_BUFFER = 0x8893, ARRAY_BUFFER_BINDING = 0x8894, ELEMENT_ARRAY_BUFFER_BINDING = 0x8895, STREAM_DRAW = 0x88E0, STATIC_DRAW = 0x88E4, DYNAMIC_DRAW = 0x88E8, BUFFER_SIZE = 0x8764, BUFFER_USAGE = 0x8765, CURRENT_VERTEX_ATTRIB = 0x8626, /* CullFaceMode */ FRONT = 0x0404, BACK = 0x0405, FRONT_AND_BACK = 0x0408, /* DepthFunction */ /* NEVER */ /* LESS */ /* EQUAL */ /* LEQUAL */ /* GREATER */ /* NOTEQUAL */ /* GEQUAL */ /* ALWAYS */ /* EnableCap */ /* TEXTURE_2D */ CULL_FACE = 0x0B44, BLEND = 0x0BE2, DITHER = 0x0BD0, STENCIL_TEST = 0x0B90, DEPTH_TEST = 0x0B71, SCISSOR_TEST = 0x0C11, POLYGON_OFFSET_FILL = 0x8037,
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
SAMPLE_ALPHA_TO_COVERAGE = 0x809E, SAMPLE_COVERAGE = 0x80A0, /* Error Codes */ NO_ERROR = 0, INVALID_ENUM = 0x0500, INVALID_VALUE = 0x0501, INVALID_OPERATION = 0x0502, OUT_OF_MEMORY = 0x0505, /* FrontFaceDirection */ CW = 0x0900, CCW = 0x0901, /* GetPName */ LINE_WIDTH = 0x0B21, ALIASED_POINT_SIZE_RANGE = 0x846D, ALIASED_LINE_WIDTH_RANGE = 0x846E, CULL_FACE_MODE = 0x0B45, FRONT_FACE = 0x0B46, DEPTH_RANGE = 0x0B70, DEPTH_WRITEMASK = 0x0B72, DEPTH_CLEAR_VALUE = 0x0B73, DEPTH_FUNC = 0x0B74, STENCIL_CLEAR_VALUE = 0x0B91, STENCIL_FUNC = 0x0B92, STENCIL_FAIL = 0x0B94, STENCIL_PASS_DEPTH_FAIL = 0x0B95, STENCIL_PASS_DEPTH_PASS = 0x0B96, STENCIL_REF = 0x0B97, STENCIL_VALUE_MASK = 0x0B93, STENCIL_WRITEMASK = 0x0B98, STENCIL_BACK_FUNC = 0x8800, STENCIL_BACK_FAIL = 0x8801, STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802, STENCIL_BACK_PASS_DEPTH_PASS = 0x8803, STENCIL_BACK_REF = 0x8CA3, STENCIL_BACK_VALUE_MASK = 0x8CA4, STENCIL_BACK_WRITEMASK = 0x8CA5, VIEWPORT = 0x0BA2, SCISSOR_BOX = 0x0C10, /* SCISSOR_TEST */ COLOR_CLEAR_VALUE = 0x0C22, COLOR_WRITEMASK = 0x0C23, UNPACK_ALIGNMENT = 0x0CF5, PACK_ALIGNMENT = 0x0D05, MAX_TEXTURE_SIZE = 0x0D33, MAX_VIEWPORT_DIMS = 0x0D3A, SUBPIXEL_BITS = 0x0D50, RED_BITS = 0x0D52, GREEN_BITS = 0x0D53, BLUE_BITS = 0x0D54, ALPHA_BITS = 0x0D55, DEPTH_BITS = 0x0D56, STENCIL_BITS = 0x0D57, POLYGON_OFFSET_UNITS = 0x2A00, /* POLYGON_OFFSET_FILL */ POLYGON_OFFSET_FACTOR = 0x8038, TEXTURE_BINDING_2D = 0x8069, SAMPLE_BUFFERS = 0x80A8, SAMPLES = 0x80A9, SAMPLE_COVERAGE_VALUE = 0x80AA, SAMPLE_COVERAGE_INVERT = 0x80AB, /* GetTextureParameter */ /* TEXTURE_MAG_FILTER */ /* TEXTURE_MIN_FILTER */ /* TEXTURE_WRAP_S */ /* TEXTURE_WRAP_T */
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
COMPRESSED_TEXTURE_FORMATS = 0x86A3, /* HintMode */ DONT_CARE = 0x1100, FASTEST = 0x1101, NICEST = 0x1102, /* HintTarget */ GENERATE_MIPMAP_HINT = 0x8192, /* DataType */ BYTE = 0x1400, UNSIGNED_BYTE = 0x1401, SHORT = 0x1402, UNSIGNED_SHORT = 0x1403, INT = 0x1404, UNSIGNED_INT = 0x1405, FLOAT = 0x1406, /* PixelFormat */ DEPTH_COMPONENT = 0x1902, ALPHA = 0x1906, RGB = 0x1907, RGBA = 0x1908, LUMINANCE = 0x1909, LUMINANCE_ALPHA = 0x190A, /* PixelType */ /* UNSIGNED_BYTE */ UNSIGNED_SHORT_4_4_4_4 = 0x8033, UNSIGNED_SHORT_5_5_5_1 = 0x8034, UNSIGNED_SHORT_5_6_5 = 0x8363, /* Shaders */ FRAGMENT_SHADER = 0x8B30, VERTEX_SHADER = 0x8B31, MAX_VERTEX_ATTRIBS = 0x8869, MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB, MAX_VARYING_VECTORS = 0x8DFC, MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D, MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C, MAX_TEXTURE_IMAGE_UNITS = 0x8872, MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD, SHADER_TYPE = 0x8B4F, DELETE_STATUS = 0x8B80, LINK_STATUS = 0x8B82, VALIDATE_STATUS = 0x8B83, ATTACHED_SHADERS = 0x8B85, ACTIVE_UNIFORMS = 0x8B86, ACTIVE_ATTRIBUTES = 0x8B89, SHADING_LANGUAGE_VERSION = 0x8B8C, CURRENT_PROGRAM = 0x8B8D, /* StencilFunction */ NEVER = 0x0200, LESS = 0x0201, EQUAL = 0x0202, LEQUAL = 0x0203, GREATER = 0x0204, NOTEQUAL = 0x0205, GEQUAL = 0x0206, ALWAYS = 0x0207, /* StencilOp */ /* ZERO */ KEEP = 0x1E00, REPLACE = 0x1E01, INCR = 0x1E02, DECR = 0x1E03, INVERT = 0x150A,
351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
INCR_WRAP = 0x8507, DECR_WRAP = 0x8508, /* StringName */ VENDOR = 0x1F00, RENDERER = 0x1F01, VERSION = 0x1F02, /* TextureMagFilter */ NEAREST = 0x2600, LINEAR = 0x2601, /* TextureMinFilter */ /* NEAREST */ /* LINEAR */ NEAREST_MIPMAP_NEAREST = 0x2700, LINEAR_MIPMAP_NEAREST = 0x2701, NEAREST_MIPMAP_LINEAR = 0x2702, LINEAR_MIPMAP_LINEAR = 0x2703, /* TextureParameterName */ TEXTURE_MAG_FILTER = 0x2800, TEXTURE_MIN_FILTER = 0x2801, TEXTURE_WRAP_S = 0x2802, TEXTURE_WRAP_T = 0x2803, /* TextureTarget */ TEXTURE_2D = 0x0DE1, TEXTURE = 0x1702, TEXTURE_CUBE_MAP = 0x8513, TEXTURE_BINDING_CUBE_MAP = 0x8514, TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515, TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516, TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517, TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518, TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519, TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A, MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C, /* TextureUnit */ TEXTURE0 = 0x84C0, TEXTURE1 = 0x84C1, TEXTURE2 = 0x84C2, TEXTURE3 = 0x84C3, TEXTURE4 = 0x84C4, TEXTURE5 = 0x84C5, TEXTURE6 = 0x84C6, TEXTURE7 = 0x84C7, TEXTURE8 = 0x84C8, TEXTURE9 = 0x84C9, TEXTURE10 = 0x84CA, TEXTURE11 = 0x84CB, TEXTURE12 = 0x84CC, TEXTURE13 = 0x84CD, TEXTURE14 = 0x84CE, TEXTURE15 = 0x84CF, TEXTURE16 = 0x84D0, TEXTURE17 = 0x84D1, TEXTURE18 = 0x84D2, TEXTURE19 = 0x84D3, TEXTURE20 = 0x84D4, TEXTURE21 = 0x84D5, TEXTURE22 = 0x84D6, TEXTURE23 = 0x84D7, TEXTURE24 = 0x84D8, TEXTURE25 = 0x84D9, TEXTURE26 = 0x84DA, TEXTURE27 = 0x84DB, TEXTURE28 = 0x84DC,
421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
TEXTURE29 = 0x84DD, TEXTURE30 = 0x84DE, TEXTURE31 = 0x84DF, ACTIVE_TEXTURE = 0x84E0, /* TextureWrapMode */ REPEAT = 0x2901, CLAMP_TO_EDGE = 0x812F, MIRRORED_REPEAT = 0x8370, /* Uniform Types */ FLOAT_VEC2 = 0x8B50, FLOAT_VEC3 = 0x8B51, FLOAT_VEC4 = 0x8B52, INT_VEC2 = 0x8B53, INT_VEC3 = 0x8B54, INT_VEC4 = 0x8B55, BOOL = 0x8B56, BOOL_VEC2 = 0x8B57, BOOL_VEC3 = 0x8B58, BOOL_VEC4 = 0x8B59, FLOAT_MAT2 = 0x8B5A, FLOAT_MAT3 = 0x8B5B, FLOAT_MAT4 = 0x8B5C, SAMPLER_2D = 0x8B5E, SAMPLER_CUBE = 0x8B60, /* Vertex Arrays */ VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622, VERTEX_ATTRIB_ARRAY_SIZE = 0x8623, VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624, VERTEX_ATTRIB_ARRAY_TYPE = 0x8625, VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A, VERTEX_ATTRIB_ARRAY_POINTER = 0x8645, VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F, /* Shader Source */ COMPILE_STATUS = 0x8B81, /* Shader Precision-Specified Types */ LOW_FLOAT = 0x8DF0, MEDIUM_FLOAT = 0x8DF1, HIGH_FLOAT = 0x8DF2, LOW_INT = 0x8DF3, MEDIUM_INT = 0x8DF4, HIGH_INT = 0x8DF5, /* Framebuffer Object. */ FRAMEBUFFER = 0x8D40, RENDERBUFFER = 0x8D41, RGBA4 = 0x8056, RGB5_A1 = 0x8057, RGB565 = 0x8D62, DEPTH_COMPONENT16 = 0x81A5, STENCIL_INDEX = 0x1901, STENCIL_INDEX8 = 0x8D48, DEPTH_STENCIL = 0x84F9, RENDERBUFFER_WIDTH = 0x8D42, RENDERBUFFER_HEIGHT = 0x8D43, RENDERBUFFER_INTERNAL_FORMAT = 0x8D44, RENDERBUFFER_RED_SIZE = 0x8D50, RENDERBUFFER_GREEN_SIZE = 0x8D51, RENDERBUFFER_BLUE_SIZE = 0x8D52, RENDERBUFFER_ALPHA_SIZE = 0x8D53, RENDERBUFFER_DEPTH_SIZE = 0x8D54, RENDERBUFFER_STENCIL_SIZE = 0x8D55, FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0,
491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1, FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2, FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3, COLOR_ATTACHMENT0 = 0x8CE0, DEPTH_ATTACHMENT = 0x8D00, STENCIL_ATTACHMENT = 0x8D20, DEPTH_STENCIL_ATTACHMENT = 0x821A, NONE = 0, FRAMEBUFFER_COMPLETE = 0x8CD5, FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6, FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7, FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9, FRAMEBUFFER_UNSUPPORTED = 0x8CDD, FRAMEBUFFER_BINDING = 0x8CA6, RENDERBUFFER_BINDING = 0x8CA7, MAX_RENDERBUFFER_SIZE = 0x84E8, INVALID_FRAMEBUFFER_OPERATION = 0x0506, /* WebGL-specific enums */ UNPACK_FLIP_Y_WEBGL = 0x9240, UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241, CONTEXT_LOST_WEBGL = 0x9242, UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243, BROWSER_DEFAULT_WEBGL = 0x9244, /* WEBGL_debug_renderer_info */ UNMASKED_VENDOR_WEBGL = 0x9245, UNMASKED_RENDERER_WEBGL = 0x9246 }; /* ClearBufferMask */ ENUM_AS_PROPERTY(DEPTH_BUFFER_BIT) ENUM_AS_PROPERTY(STENCIL_BUFFER_BIT) ENUM_AS_PROPERTY(COLOR_BUFFER_BIT) /* BeginMode */ ENUM_AS_PROPERTY(POINTS) ENUM_AS_PROPERTY(LINES) ENUM_AS_PROPERTY(LINE_LOOP) ENUM_AS_PROPERTY(LINE_STRIP) ENUM_AS_PROPERTY(TRIANGLES) ENUM_AS_PROPERTY(TRIANGLE_STRIP) ENUM_AS_PROPERTY(TRIANGLE_FAN) /* AlphaFunction (not supported in ES20) */ /* NEVER */ /* LESS */ /* EQUAL */ /* LEQUAL */ /* GREATER */ /* NOTEQUAL */ /* GEQUAL */ /* ALWAYS */ /* BlendingFactorDest */ ENUM_AS_PROPERTY(ZERO) ENUM_AS_PROPERTY(ONE) ENUM_AS_PROPERTY(SRC_COLOR) ENUM_AS_PROPERTY(ONE_MINUS_SRC_COLOR) ENUM_AS_PROPERTY(SRC_ALPHA) ENUM_AS_PROPERTY(ONE_MINUS_SRC_ALPHA) ENUM_AS_PROPERTY(DST_ALPHA) ENUM_AS_PROPERTY(ONE_MINUS_DST_ALPHA) /* BlendingFactorSrc */
561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
/* ZERO */ /* ONE */ ENUM_AS_PROPERTY(DST_COLOR) ENUM_AS_PROPERTY(ONE_MINUS_DST_COLOR) ENUM_AS_PROPERTY(SRC_ALPHA_SATURATE) /* SRC_ALPHA */ /* ONE_MINUS_SRC_ALPHA */ /* DST_ALPHA */ /* ONE_MINUS_DST_ALPHA */ /* BlendEquationSeparate */ ENUM_AS_PROPERTY(FUNC_ADD) ENUM_AS_PROPERTY(BLEND_EQUATION) ENUM_AS_PROPERTY(BLEND_EQUATION_RGB) /* same as BLEND_EQUATION */ ENUM_AS_PROPERTY(BLEND_EQUATION_ALPHA) /* BlendSubtract */ ENUM_AS_PROPERTY(FUNC_SUBTRACT) ENUM_AS_PROPERTY(FUNC_REVERSE_SUBTRACT) /* Separate Blend Functions */ ENUM_AS_PROPERTY(BLEND_DST_RGB) ENUM_AS_PROPERTY(BLEND_SRC_RGB) ENUM_AS_PROPERTY(BLEND_DST_ALPHA) ENUM_AS_PROPERTY(BLEND_SRC_ALPHA) ENUM_AS_PROPERTY(CONSTANT_COLOR) ENUM_AS_PROPERTY(ONE_MINUS_CONSTANT_COLOR) ENUM_AS_PROPERTY(CONSTANT_ALPHA) ENUM_AS_PROPERTY(ONE_MINUS_CONSTANT_ALPHA) ENUM_AS_PROPERTY(BLEND_COLOR) /* Buffer Objects */ ENUM_AS_PROPERTY(ARRAY_BUFFER) ENUM_AS_PROPERTY(ELEMENT_ARRAY_BUFFER) ENUM_AS_PROPERTY(ARRAY_BUFFER_BINDING) ENUM_AS_PROPERTY(ELEMENT_ARRAY_BUFFER_BINDING) ENUM_AS_PROPERTY(STREAM_DRAW) ENUM_AS_PROPERTY(STATIC_DRAW) ENUM_AS_PROPERTY(DYNAMIC_DRAW) ENUM_AS_PROPERTY(BUFFER_SIZE) ENUM_AS_PROPERTY(BUFFER_USAGE) ENUM_AS_PROPERTY(CURRENT_VERTEX_ATTRIB) /* CullFaceMode */ ENUM_AS_PROPERTY(FRONT) ENUM_AS_PROPERTY(BACK) ENUM_AS_PROPERTY(FRONT_AND_BACK) /* DepthFunction */ /* NEVER */ /* LESS */ /* EQUAL */ /* LEQUAL */ /* GREATER */ /* NOTEQUAL */ /* GEQUAL */ /* ALWAYS */ /* EnableCap */ /* TEXTURE_2D */ ENUM_AS_PROPERTY(CULL_FACE) ENUM_AS_PROPERTY(BLEND) ENUM_AS_PROPERTY(DITHER) ENUM_AS_PROPERTY(STENCIL_TEST) ENUM_AS_PROPERTY(DEPTH_TEST) ENUM_AS_PROPERTY(SCISSOR_TEST) ENUM_AS_PROPERTY(POLYGON_OFFSET_FILL)
631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
ENUM_AS_PROPERTY(SAMPLE_ALPHA_TO_COVERAGE) ENUM_AS_PROPERTY(SAMPLE_COVERAGE) /* ErrorCode */ ENUM_AS_PROPERTY(NO_ERROR) ENUM_AS_PROPERTY(INVALID_ENUM) ENUM_AS_PROPERTY(INVALID_VALUE) ENUM_AS_PROPERTY(INVALID_OPERATION) ENUM_AS_PROPERTY(OUT_OF_MEMORY) /* FrontFaceDirection */ ENUM_AS_PROPERTY(CW) ENUM_AS_PROPERTY(CCW) /* GetPName */ ENUM_AS_PROPERTY(LINE_WIDTH) ENUM_AS_PROPERTY(ALIASED_POINT_SIZE_RANGE) ENUM_AS_PROPERTY(ALIASED_LINE_WIDTH_RANGE) ENUM_AS_PROPERTY(CULL_FACE_MODE) ENUM_AS_PROPERTY(FRONT_FACE) ENUM_AS_PROPERTY(DEPTH_RANGE) ENUM_AS_PROPERTY(DEPTH_WRITEMASK) ENUM_AS_PROPERTY(DEPTH_CLEAR_VALUE) ENUM_AS_PROPERTY(DEPTH_FUNC) ENUM_AS_PROPERTY(STENCIL_CLEAR_VALUE) ENUM_AS_PROPERTY(STENCIL_FUNC) ENUM_AS_PROPERTY(STENCIL_FAIL) ENUM_AS_PROPERTY(STENCIL_PASS_DEPTH_FAIL) ENUM_AS_PROPERTY(STENCIL_PASS_DEPTH_PASS) ENUM_AS_PROPERTY(STENCIL_REF) ENUM_AS_PROPERTY(STENCIL_VALUE_MASK) ENUM_AS_PROPERTY(STENCIL_WRITEMASK) ENUM_AS_PROPERTY(STENCIL_BACK_FUNC) ENUM_AS_PROPERTY(STENCIL_BACK_FAIL) ENUM_AS_PROPERTY(STENCIL_BACK_PASS_DEPTH_FAIL) ENUM_AS_PROPERTY(STENCIL_BACK_PASS_DEPTH_PASS) ENUM_AS_PROPERTY(STENCIL_BACK_REF) ENUM_AS_PROPERTY(STENCIL_BACK_VALUE_MASK) ENUM_AS_PROPERTY(STENCIL_BACK_WRITEMASK) ENUM_AS_PROPERTY(VIEWPORT) ENUM_AS_PROPERTY(SCISSOR_BOX) /* SCISSOR_TEST */ ENUM_AS_PROPERTY(COLOR_CLEAR_VALUE) ENUM_AS_PROPERTY(COLOR_WRITEMASK) ENUM_AS_PROPERTY(UNPACK_ALIGNMENT) ENUM_AS_PROPERTY(PACK_ALIGNMENT) ENUM_AS_PROPERTY(MAX_TEXTURE_SIZE) ENUM_AS_PROPERTY(MAX_VIEWPORT_DIMS) ENUM_AS_PROPERTY(SUBPIXEL_BITS) ENUM_AS_PROPERTY(RED_BITS) ENUM_AS_PROPERTY(GREEN_BITS) ENUM_AS_PROPERTY(BLUE_BITS) ENUM_AS_PROPERTY(ALPHA_BITS) ENUM_AS_PROPERTY(DEPTH_BITS) ENUM_AS_PROPERTY(STENCIL_BITS) ENUM_AS_PROPERTY(POLYGON_OFFSET_UNITS) /* POLYGON_OFFSET_FILL */ ENUM_AS_PROPERTY(POLYGON_OFFSET_FACTOR) ENUM_AS_PROPERTY(TEXTURE_BINDING_2D) ENUM_AS_PROPERTY(SAMPLE_BUFFERS) ENUM_AS_PROPERTY(SAMPLES) ENUM_AS_PROPERTY(SAMPLE_COVERAGE_VALUE) ENUM_AS_PROPERTY(SAMPLE_COVERAGE_INVERT) /* GetTextureParameter */ /* TEXTURE_MAG_FILTER */ /* TEXTURE_MIN_FILTER */ /* TEXTURE_WRAP_S */ /* TEXTURE_WRAP_T */
701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
ENUM_AS_PROPERTY(COMPRESSED_TEXTURE_FORMATS) /* HintMode */ ENUM_AS_PROPERTY(DONT_CARE) ENUM_AS_PROPERTY(FASTEST) ENUM_AS_PROPERTY(NICEST) /* HintTarget */ ENUM_AS_PROPERTY(GENERATE_MIPMAP_HINT) /* DataType */ ENUM_AS_PROPERTY(BYTE) ENUM_AS_PROPERTY(UNSIGNED_BYTE) ENUM_AS_PROPERTY(SHORT) ENUM_AS_PROPERTY(UNSIGNED_SHORT) ENUM_AS_PROPERTY(INT) ENUM_AS_PROPERTY(UNSIGNED_INT) ENUM_AS_PROPERTY(FLOAT) /* PixelFormat */ ENUM_AS_PROPERTY(DEPTH_COMPONENT) ENUM_AS_PROPERTY(ALPHA) ENUM_AS_PROPERTY(RGB) ENUM_AS_PROPERTY(RGBA) ENUM_AS_PROPERTY(LUMINANCE) ENUM_AS_PROPERTY(LUMINANCE_ALPHA) /* PixelType */ /* UNSIGNED_BYTE */ ENUM_AS_PROPERTY(UNSIGNED_SHORT_4_4_4_4) ENUM_AS_PROPERTY(UNSIGNED_SHORT_5_5_5_1) ENUM_AS_PROPERTY(UNSIGNED_SHORT_5_6_5) /* Shaders */ ENUM_AS_PROPERTY(FRAGMENT_SHADER) ENUM_AS_PROPERTY(VERTEX_SHADER) ENUM_AS_PROPERTY(MAX_VERTEX_ATTRIBS) ENUM_AS_PROPERTY(MAX_VERTEX_UNIFORM_VECTORS) ENUM_AS_PROPERTY(MAX_VARYING_VECTORS) ENUM_AS_PROPERTY(MAX_COMBINED_TEXTURE_IMAGE_UNITS) ENUM_AS_PROPERTY(MAX_VERTEX_TEXTURE_IMAGE_UNITS) ENUM_AS_PROPERTY(MAX_TEXTURE_IMAGE_UNITS) ENUM_AS_PROPERTY(MAX_FRAGMENT_UNIFORM_VECTORS) ENUM_AS_PROPERTY(SHADER_TYPE) ENUM_AS_PROPERTY(DELETE_STATUS) ENUM_AS_PROPERTY(LINK_STATUS) ENUM_AS_PROPERTY(VALIDATE_STATUS) ENUM_AS_PROPERTY(ATTACHED_SHADERS) ENUM_AS_PROPERTY(ACTIVE_UNIFORMS) ENUM_AS_PROPERTY(ACTIVE_ATTRIBUTES) ENUM_AS_PROPERTY(SHADING_LANGUAGE_VERSION) ENUM_AS_PROPERTY(CURRENT_PROGRAM) /* StencilFunction */ ENUM_AS_PROPERTY(NEVER) ENUM_AS_PROPERTY(LESS) ENUM_AS_PROPERTY(EQUAL) ENUM_AS_PROPERTY(LEQUAL) ENUM_AS_PROPERTY(GREATER) ENUM_AS_PROPERTY(NOTEQUAL) ENUM_AS_PROPERTY(GEQUAL) ENUM_AS_PROPERTY(ALWAYS) /* StencilOp */ /* ZERO */ ENUM_AS_PROPERTY(KEEP) ENUM_AS_PROPERTY(REPLACE) ENUM_AS_PROPERTY(INCR) ENUM_AS_PROPERTY(DECR) ENUM_AS_PROPERTY(INVERT)
771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
ENUM_AS_PROPERTY(INCR_WRAP) ENUM_AS_PROPERTY(DECR_WRAP) /* StringName */ ENUM_AS_PROPERTY(VENDOR) ENUM_AS_PROPERTY(RENDERER) ENUM_AS_PROPERTY(VERSION) /* TextureMagFilter */ ENUM_AS_PROPERTY(NEAREST) ENUM_AS_PROPERTY(LINEAR) /* TextureMinFilter */ /* NEAREST */ /* LINEAR */ ENUM_AS_PROPERTY(NEAREST_MIPMAP_NEAREST) ENUM_AS_PROPERTY(LINEAR_MIPMAP_NEAREST) ENUM_AS_PROPERTY(NEAREST_MIPMAP_LINEAR) ENUM_AS_PROPERTY(LINEAR_MIPMAP_LINEAR) /* TextureParameterName */ ENUM_AS_PROPERTY(TEXTURE_MAG_FILTER) ENUM_AS_PROPERTY(TEXTURE_MIN_FILTER) ENUM_AS_PROPERTY(TEXTURE_WRAP_S) ENUM_AS_PROPERTY(TEXTURE_WRAP_T) /* TextureTarget */ ENUM_AS_PROPERTY(TEXTURE_2D) ENUM_AS_PROPERTY(TEXTURE) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP) ENUM_AS_PROPERTY(TEXTURE_BINDING_CUBE_MAP) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_POSITIVE_X) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_NEGATIVE_X) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_POSITIVE_Y) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_NEGATIVE_Y) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_POSITIVE_Z) ENUM_AS_PROPERTY(TEXTURE_CUBE_MAP_NEGATIVE_Z) ENUM_AS_PROPERTY(MAX_CUBE_MAP_TEXTURE_SIZE) /* TextureUnit */ ENUM_AS_PROPERTY(TEXTURE0) ENUM_AS_PROPERTY(TEXTURE1) ENUM_AS_PROPERTY(TEXTURE2) ENUM_AS_PROPERTY(TEXTURE3) ENUM_AS_PROPERTY(TEXTURE4) ENUM_AS_PROPERTY(TEXTURE5) ENUM_AS_PROPERTY(TEXTURE6) ENUM_AS_PROPERTY(TEXTURE7) ENUM_AS_PROPERTY(TEXTURE8) ENUM_AS_PROPERTY(TEXTURE9) ENUM_AS_PROPERTY(TEXTURE10) ENUM_AS_PROPERTY(TEXTURE11) ENUM_AS_PROPERTY(TEXTURE12) ENUM_AS_PROPERTY(TEXTURE13) ENUM_AS_PROPERTY(TEXTURE14) ENUM_AS_PROPERTY(TEXTURE15) ENUM_AS_PROPERTY(TEXTURE16) ENUM_AS_PROPERTY(TEXTURE17) ENUM_AS_PROPERTY(TEXTURE18) ENUM_AS_PROPERTY(TEXTURE19) ENUM_AS_PROPERTY(TEXTURE20) ENUM_AS_PROPERTY(TEXTURE21) ENUM_AS_PROPERTY(TEXTURE22) ENUM_AS_PROPERTY(TEXTURE23) ENUM_AS_PROPERTY(TEXTURE24) ENUM_AS_PROPERTY(TEXTURE25) ENUM_AS_PROPERTY(TEXTURE26) ENUM_AS_PROPERTY(TEXTURE27) ENUM_AS_PROPERTY(TEXTURE28)
841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910
ENUM_AS_PROPERTY(TEXTURE29) ENUM_AS_PROPERTY(TEXTURE30) ENUM_AS_PROPERTY(TEXTURE31) ENUM_AS_PROPERTY(ACTIVE_TEXTURE) /* TextureWrapMode */ ENUM_AS_PROPERTY(REPEAT) ENUM_AS_PROPERTY(CLAMP_TO_EDGE) ENUM_AS_PROPERTY(MIRRORED_REPEAT) /* Uniform Types */ ENUM_AS_PROPERTY(FLOAT_VEC2) ENUM_AS_PROPERTY(FLOAT_VEC3) ENUM_AS_PROPERTY(FLOAT_VEC4) ENUM_AS_PROPERTY(INT_VEC2) ENUM_AS_PROPERTY(INT_VEC3) ENUM_AS_PROPERTY(INT_VEC4) ENUM_AS_PROPERTY(BOOL) ENUM_AS_PROPERTY(BOOL_VEC2) ENUM_AS_PROPERTY(BOOL_VEC3) ENUM_AS_PROPERTY(BOOL_VEC4) ENUM_AS_PROPERTY(FLOAT_MAT2) ENUM_AS_PROPERTY(FLOAT_MAT3) ENUM_AS_PROPERTY(FLOAT_MAT4) ENUM_AS_PROPERTY(SAMPLER_2D) ENUM_AS_PROPERTY(SAMPLER_CUBE) /* Vertex Arrays */ ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_ENABLED) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_SIZE) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_STRIDE) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_TYPE) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_NORMALIZED) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_POINTER) ENUM_AS_PROPERTY(VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) /* Shader Source */ ENUM_AS_PROPERTY(COMPILE_STATUS) /* Shader Precision-Specified Types */ ENUM_AS_PROPERTY(LOW_FLOAT) ENUM_AS_PROPERTY(MEDIUM_FLOAT) ENUM_AS_PROPERTY(HIGH_FLOAT) ENUM_AS_PROPERTY(LOW_INT) ENUM_AS_PROPERTY(MEDIUM_INT) ENUM_AS_PROPERTY(HIGH_INT) /* Framebuffer Object. */ ENUM_AS_PROPERTY(FRAMEBUFFER) ENUM_AS_PROPERTY(RENDERBUFFER) ENUM_AS_PROPERTY(RGBA4) ENUM_AS_PROPERTY(RGB5_A1) ENUM_AS_PROPERTY(RGB565) ENUM_AS_PROPERTY(DEPTH_COMPONENT16) ENUM_AS_PROPERTY(STENCIL_INDEX) ENUM_AS_PROPERTY(STENCIL_INDEX8) ENUM_AS_PROPERTY(DEPTH_STENCIL) ENUM_AS_PROPERTY(RENDERBUFFER_WIDTH) ENUM_AS_PROPERTY(RENDERBUFFER_HEIGHT) ENUM_AS_PROPERTY(RENDERBUFFER_INTERNAL_FORMAT) ENUM_AS_PROPERTY(RENDERBUFFER_RED_SIZE) ENUM_AS_PROPERTY(RENDERBUFFER_GREEN_SIZE) ENUM_AS_PROPERTY(RENDERBUFFER_BLUE_SIZE) ENUM_AS_PROPERTY(RENDERBUFFER_ALPHA_SIZE) ENUM_AS_PROPERTY(RENDERBUFFER_DEPTH_SIZE) ENUM_AS_PROPERTY(RENDERBUFFER_STENCIL_SIZE) ENUM_AS_PROPERTY(FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE)
911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980
ENUM_AS_PROPERTY(FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) ENUM_AS_PROPERTY(FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) ENUM_AS_PROPERTY(FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) ENUM_AS_PROPERTY(COLOR_ATTACHMENT0) ENUM_AS_PROPERTY(DEPTH_ATTACHMENT) ENUM_AS_PROPERTY(STENCIL_ATTACHMENT) ENUM_AS_PROPERTY(DEPTH_STENCIL_ATTACHMENT) ENUM_AS_PROPERTY(NONE) ENUM_AS_PROPERTY(FRAMEBUFFER_COMPLETE) ENUM_AS_PROPERTY(FRAMEBUFFER_INCOMPLETE_ATTACHMENT) ENUM_AS_PROPERTY(FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT) ENUM_AS_PROPERTY(FRAMEBUFFER_INCOMPLETE_DIMENSIONS) ENUM_AS_PROPERTY(FRAMEBUFFER_UNSUPPORTED) ENUM_AS_PROPERTY(FRAMEBUFFER_BINDING) ENUM_AS_PROPERTY(RENDERBUFFER_BINDING) ENUM_AS_PROPERTY(MAX_RENDERBUFFER_SIZE) ENUM_AS_PROPERTY(INVALID_FRAMEBUFFER_OPERATION) /* WebGL-specific enums */ ENUM_AS_PROPERTY(UNPACK_FLIP_Y_WEBGL) ENUM_AS_PROPERTY(UNPACK_PREMULTIPLY_ALPHA_WEBGL) ENUM_AS_PROPERTY(CONTEXT_LOST_WEBGL) ENUM_AS_PROPERTY(UNPACK_COLORSPACE_CONVERSION_WEBGL) ENUM_AS_PROPERTY(BROWSER_DEFAULT_WEBGL) CanvasContext(QOpenGLContext *context, int width, int height, QObject *parent = 0); ~CanvasContext(); void setCanvas(Canvas *canvas); Canvas *canvas(); uint drawingBufferWidth(); uint drawingBufferHeight(); Q_INVOKABLE QVariantList getSupportedExtensions(); Q_INVOKABLE QVariant getExtension(const QString &name); Q_INVOKABLE bool isContextLost(); void setContextAttributes(const CanvasContextAttributes &attribs); Q_INVOKABLE CanvasContextAttributes *getContextAttributes(); Q_INVOKABLE CanvasShaderPrecisionFormat *getShaderPrecisionFormat(glEnums shadertype, glEnums precisiontype); Q_INVOKABLE void flush(); Q_INVOKABLE void finish(); Q_INVOKABLE CanvasTexture *createTexture(); Q_INVOKABLE void deleteTexture(CanvasTexture *texture); Q_INVOKABLE void activeTexture(glEnums texture); Q_INVOKABLE void bindTexture(glEnums target, CanvasTexture *texture); Q_INVOKABLE void generateMipmap(glEnums target); Q_INVOKABLE bool isTexture(QObject *texture); Q_INVOKABLE void compressedTexImage2D(glEnums target, int level, glEnums internalformat, int width, int height, int border, CanvasTypedArray *pixels); Q_INVOKABLE void compressedTexSubImage2D(glEnums target, int level, int xoffset, int yoffset, int width, int height, glEnums format, CanvasTypedArray *pixels); Q_INVOKABLE void copyTexImage2D(glEnums target, int level, glEnums internalformat, int x, int y, int width, int height,
981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050
int border); Q_INVOKABLE void copyTexSubImage2D(glEnums target, int level, int xoffset, int yoffset, int x, int y, int width, int height); Q_INVOKABLE void texImage2D(glEnums target, int level, glEnums internalformat, int width, int height, int border, glEnums format, glEnums type, CanvasTypedArray *pixels); Q_INVOKABLE void texSubImage2D(glEnums target, int level, int xoffset, int yoffset, int width, int height, glEnums format, glEnums type, CanvasTypedArray *pixels); Q_INVOKABLE void texImage2D(glEnums target, int level, glEnums internalformat, glEnums format, glEnums type, CanvasTextureImage *image); Q_INVOKABLE void texSubImage2D(glEnums target, int level, int xoffset, int yoffset, glEnums format, glEnums type, CanvasTextureImage *image); Q_INVOKABLE void texParameterf(glEnums target, glEnums pname, float param); Q_INVOKABLE void texParameteri(glEnums target, glEnums pname, int param); Q_INVOKABLE CanvasFrameBuffer *createFramebuffer(); Q_INVOKABLE void bindFramebuffer(glEnums target, CanvasFrameBuffer* framebuffer); Q_INVOKABLE glEnums checkFramebufferStatus(glEnums target); Q_INVOKABLE void framebufferRenderbuffer(glEnums target, glEnums attachment, glEnums renderbuffertarget, CanvasRenderBuffer *renderbuffer); Q_INVOKABLE void framebufferTexture2D(glEnums target, glEnums attachment, glEnums textarget, CanvasTexture *texture, int level); Q_INVOKABLE bool isFramebuffer(QObject *anyObject); Q_INVOKABLE void deleteFramebuffer(CanvasFrameBuffer *buffer); Q_INVOKABLE CanvasRenderBuffer *createRenderbuffer(); Q_INVOKABLE void bindRenderbuffer(glEnums target, CanvasRenderBuffer *renderbuffer); Q_INVOKABLE void renderbufferStorage(glEnums target, glEnums internalformat, int width, int height); Q_INVOKABLE bool isRenderbuffer(QObject *anyObject); Q_INVOKABLE void deleteRenderbuffer(CanvasRenderBuffer *renderbuffer); Q_INVOKABLE void sampleCoverage(float value, bool invert); Q_INVOKABLE CanvasShader *createShader(glEnums type); Q_INVOKABLE bool isShader(QObject *anyObject); Q_INVOKABLE void deleteShader(CanvasShader *shader); Q_INVOKABLE void shaderSource(CanvasShader *shader, const QString &shaderSource); Q_INVOKABLE QString getShaderSource(CanvasShader *shader); Q_INVOKABLE void compileShader(CanvasShader *shader); Q_INVOKABLE void uniform1f(CanvasUniformLocation *location, float x); Q_INVOKABLE void uniform1i(CanvasUniformLocation *location, int x); Q_INVOKABLE void uniform2f(CanvasUniformLocation *location, float x, float y); Q_INVOKABLE void uniform2i(CanvasUniformLocation *location, int x, int y); Q_INVOKABLE void uniform3f(CanvasUniformLocation *location, float x, float y, float z); Q_INVOKABLE void uniform3i(CanvasUniformLocation *location, int x, int y, int z); Q_INVOKABLE void uniform4f(CanvasUniformLocation *location, float x, float y, float z, float w); Q_INVOKABLE void uniform4i(CanvasUniformLocation *location, int x, int y, int z, int w); Q_INVOKABLE void uniform1fv(CanvasUniformLocation *location, CanvasFloat32Array *array); Q_INVOKABLE void uniform1iv(CanvasUniformLocation *location, CanvasInt32Array *array); Q_INVOKABLE void uniform2fv(CanvasUniformLocation *location, CanvasFloat32Array *array); Q_INVOKABLE void uniform2iv(CanvasUniformLocation *location, CanvasInt32Array *array); Q_INVOKABLE void uniform3fv(CanvasUniformLocation *location, CanvasFloat32Array *array); Q_INVOKABLE void uniform3iv(CanvasUniformLocation *location, CanvasInt32Array *array); Q_INVOKABLE void uniform4fv(CanvasUniformLocation *location, CanvasFloat32Array *array); Q_INVOKABLE void uniform4iv(CanvasUniformLocation *location, CanvasInt32Array *array); Q_INVOKABLE void uniform1fva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform2fva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform3fva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform4fva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform1iva(CanvasUniformLocation *location, QVariantList array);
1051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
Q_INVOKABLE void uniform2iva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform3iva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniform4iva(CanvasUniformLocation *location, QVariantList array); Q_INVOKABLE void uniformMatrix2fv(CanvasUniformLocation *location, bool transpose, CanvasFloat32Array *value); Q_INVOKABLE void uniformMatrix3fv(CanvasUniformLocation *location, bool transpose, CanvasFloat32Array *value); Q_INVOKABLE void uniformMatrix4fv(CanvasUniformLocation *location, bool transpose, CanvasFloat32Array *value); Q_INVOKABLE void uniformMatrix2fva(CanvasUniformLocation *location, bool transpose, QVariantList value); Q_INVOKABLE void uniformMatrix3fva(CanvasUniformLocation *location, bool transpose, QVariantList value); Q_INVOKABLE void uniformMatrix4fva(CanvasUniformLocation *uniformLocation, bool transpose, QVariantList value); // TODO: Q_INVOKABLE void uniform1iv(UniformLocation *location, sequence<long> v); Q_INVOKABLE CanvasProgram *createProgram(); Q_INVOKABLE void attachShader(CanvasProgram *program, CanvasShader *shader); Q_INVOKABLE void detachShader(CanvasProgram *program, CanvasShader *shader); Q_INVOKABLE void linkProgram(CanvasProgram *program); Q_INVOKABLE void useProgram(CanvasProgram *program); Q_INVOKABLE void validateProgram(CanvasProgram *program); Q_INVOKABLE CanvasUniformLocation *getUniformLocation(CanvasProgram *program, const QString &name); Q_INVOKABLE int getAttribLocation(CanvasProgram *program, const QString &name); Q_INVOKABLE void bindAttribLocation(CanvasProgram *program, int index, const QString &name); Q_INVOKABLE QString getProgramInfoLog(CanvasProgram *program) const; Q_INVOKABLE bool isProgram(QObject *anyObject); Q_INVOKABLE void deleteProgram(CanvasProgram *program); Q_INVOKABLE void disableVertexAttribArray(int index); Q_INVOKABLE void enableVertexAttribArray(int index); Q_INVOKABLE void vertexAttribPointer(int indx, int size, glEnums type, bool normalized, int stride, long offset); Q_INVOKABLE void vertexAttrib1f(unsigned int indx, float x); Q_INVOKABLE void vertexAttrib1fv(unsigned int indx, CanvasFloat32Array *values); Q_INVOKABLE void vertexAttrib2f(unsigned int indx, float x, float y); Q_INVOKABLE void vertexAttrib2fv(unsigned int indx, CanvasFloat32Array *values); Q_INVOKABLE void vertexAttrib3f(unsigned int indx, float x, float y, float z); Q_INVOKABLE void vertexAttrib3fv(unsigned int indx, CanvasFloat32Array *values); Q_INVOKABLE void vertexAttrib4f(unsigned int indx, float x, float y, float z, float w); Q_INVOKABLE void vertexAttrib4fv(unsigned int indx, CanvasFloat32Array *values); Q_INVOKABLE int getShaderParameter(CanvasShader *shader, glEnums paramName); Q_INVOKABLE QVariant getProgramParameter(CanvasProgram *program, glEnums paramName); Q_INVOKABLE QString getShaderInfoLog(CanvasShader *shader) const; /* Buffer object methods */ Q_INVOKABLE CanvasBuffer *createBuffer(); Q_INVOKABLE void bindBuffer(glEnums target, CanvasBuffer *buffer); Q_INVOKABLE void bufferData(glEnums target, long size, glEnums hint); Q_INVOKABLE void bufferData(glEnums target, CanvasTypedArray *data, glEnums hint); Q_INVOKABLE void bufferData(glEnums target, CanvasArrayBuffer &data, glEnums hint); Q_INVOKABLE void bufferSubData(glEnums target, int offset, CanvasTypedArray *data); Q_INVOKABLE void bufferSubData(glEnums target, int offset, CanvasArrayBuffer &data); Q_INVOKABLE QVariant getBufferParameter(glEnums target, glEnums pname); Q_INVOKABLE bool isBuffer(QObject *anyObject); Q_INVOKABLE void deleteBuffer(CanvasBuffer *buffer); Q_INVOKABLE glEnums getError(); Q_INVOKABLE void cullFace(glEnums mode); Q_INVOKABLE void frontFace(glEnums mode); Q_INVOKABLE void lineWidth(float width); Q_INVOKABLE void pixelStorei(glEnums pname, int param); Q_INVOKABLE void polygonOffset(float factor, float units);
1121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190
Q_INVOKABLE void hint(glEnums target, glEnums mode); Q_INVOKABLE void enable(glEnums cap); Q_INVOKABLE bool isEnabled(glEnums cap); Q_INVOKABLE void disable(glEnums cap); Q_INVOKABLE QVariant getParameter(glEnums pname); Q_INVOKABLE void clear(glEnums flags); Q_INVOKABLE void depthMask(bool flag); Q_INVOKABLE void depthFunc(glEnums func); Q_INVOKABLE void depthRange(float zNear, float zFar); Q_INVOKABLE void clearDepth(float depth); Q_INVOKABLE void clearColor(float red, float green, float blue, float alpha); Q_INVOKABLE void clearStencil(int s); Q_INVOKABLE void colorMask(bool red, bool green, bool blue, bool alpha); Q_INVOKABLE void blendColor(float red, float green, float blue, float alpha); Q_INVOKABLE void blendEquation(glEnums mode); Q_INVOKABLE void blendEquationSeparate(glEnums modeRGB, glEnums modeAlpha); Q_INVOKABLE void blendFunc(glEnums sfactor, glEnums dfactor); Q_INVOKABLE void blendFuncSeparate(glEnums srcRGB, glEnums dstRGB, glEnums srcAlpha, glEnums dstAlpha); Q_INVOKABLE void drawArrays(glEnums type, int first, int count); Q_INVOKABLE void drawElements(glEnums mode, int count, glEnums type, long offset); Q_INVOKABLE void viewport(int x, int y, int width, int height); Q_INVOKABLE void scissor(int x, int y, int width, int height); Q_INVOKABLE void readPixels(int x, int y, long width, long height, glEnums format, glEnums type, CanvasArrayBufferView *pixels); Q_INVOKABLE CanvasActiveInfo *getActiveAttrib(CanvasProgram *program, uint index); Q_INVOKABLE CanvasActiveInfo *getActiveUniform(CanvasProgram *program, uint index); Q_INVOKABLE QVariantList getAttachedShaders(CanvasProgram *program); Q_INVOKABLE void stencilFunc(glEnums func, int ref, uint mask); Q_INVOKABLE void stencilFuncSeparate(glEnums face, glEnums func, int ref, uint mask); Q_INVOKABLE void stencilMask(uint mask); Q_INVOKABLE void stencilMaskSeparate(glEnums face, uint mask); Q_INVOKABLE void stencilOp(glEnums fail, glEnums zfail, glEnums zpass); Q_INVOKABLE void stencilOpSeparate(glEnums face, glEnums fail, glEnums zfail, glEnums zpass); Q_INVOKABLE void vertexAttrib1fva(uint indx, QVariantList values); Q_INVOKABLE void vertexAttrib2fva(uint indx, QVariantList values); Q_INVOKABLE void vertexAttrib3fva(uint indx, QVariantList values); Q_INVOKABLE void vertexAttrib4fva(uint indx, QVariantList values); QString glEnumToString(glEnums value) const; float devicePixelRatio(); void setDevicePixelRatio(float ratio); CanvasTypedArray *createTypedArray(glEnums dataType, long size); int getSufficientSize(glEnums internalFormat, int width, int height); QRect glViewportRect() const; GLuint currentFramebuffer(); /* TODO: Add these missing functions any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname); any getRenderbufferParameter(GLenum target, GLenum pname); any getTexParameter(GLenum target, GLenum pname); any getUniform(WebGLProgram program, WebGLUniformLocation? location); any getVertexAttrib(GLuint index, GLenum pname); GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname); */
11911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237
void setLogAllCalls(bool logCalls); bool logAllCalls() const; void setLogAllErrors(bool logErrors); bool logAllErrors() const; uchar *unpackPixels(uchar *srcData, bool useSrcDataAsDst, int bytesPerPixel, int width, int height); signals: //void viewportChanged(const QRect &viewport); // TODO: unused //void viewportWidthChanged(int width); // TODO: unused //void viewportHeightChanged(int height); // TODO: unused void canvasChanged(Canvas *canvas); void logAllCallsChanged(bool logCalls); void logAllErrorsChanged(bool logErrors); void drawingBufferWidthChanged(); void drawingBufferHeightChanged(); private: bool m_unpackFlipYEnabled; bool m_unpackPremultiplyAlphaEnabled; glEnums m_unpackColorspaceConversion; bool m_logAllCalls; bool m_logAllErrors; QRect m_glViewportRect; qreal m_devicePixelRatio; CanvasProgram *m_currentProgram; CanvasBuffer *m_currentArrayBuffer; CanvasBuffer *m_currentElementArrayBuffer; CanvasTexture *m_currentTexture; QOpenGLContext *m_context; glEnums m_error; CanvasFrameBuffer *m_currentFramebuffer; CanvasRenderBuffer *m_currentRenderbuffer; CanvasContextAttributes m_contextAttributes; friend class Canvas; friend class QFBOCanvas3D; QString m_emptyString; EnumToStringMap *m_map; Canvas *m_canvas; }; #endif // CONTEXT3D_P_H