WebGL support class. More...
#include <Wt/WGLWidget>
Classes | |
class | JavaScriptMatrix4x4 |
A client-side JavaScript matrix. More... | |
Public Types | |
enum | ClientSideRenderer { PAINT_GL = 1, RESIZE_GL = 2, UPDATE_GL = 4 } |
Specifies what WebGL function needs to be updated. More... | |
enum | GLenum |
The enourmous GLenum. More... | |
Public Member Functions | |
WGLWidget (WContainerWidget *parent) | |
Construct a WebGL widget. More... | |
~WGLWidget () | |
Destructor. | |
virtual void | initializeGL () |
Initialize the WebGL state when the widget is first shown. More... | |
virtual void | resizeGL (int width, int height) |
Act on resize events. More... | |
virtual void | paintGL () |
Update the client-side painting function. More... | |
virtual void | updateGL () |
Update state set in initializeGL() More... | |
void | repaintGL (WFlags< ClientSideRenderer > which) |
Request invocation of resizeGL, paintGL and/or updateGL. More... | |
void | resize (const WLength &width, const WLength &height) |
Resizes the widget. More... | |
void | setClientSideLookAtHandler (const JavaScriptMatrix4x4 &m, double lX, double lY, double lZ, double uX, double uY, double uZ, double pitchRate, double yawRate) |
Add a mouse handler to the widget that looks at a given point. More... | |
void | setClientSideWalkHandler (const JavaScriptMatrix4x4 &m, double frontStep, double rotStep) |
Add a mouse handler to the widget that allows 'walking' in the scene. More... | |
void | setAlternativeContent (WWidget *alternative) |
Sets the content to be displayed when WebGL is not available. More... | |
JSlot & | repaintSlot () |
A JavaScript slot that repaints the widget when triggered. More... | |
void | injectJS (const std::string &jsString) |
Inject JavaScript into the current js-stream. More... | |
WebGL methods | |
The WebGL methods are mostly 1-on-1 translated to the identical JavaScript call. You can use the WebGL methods in your resizeGL(), paintGL() and updateGL() specializations. Wt takes care that data, arguments, ... are transfered to the client side and that the equivalent JavaScript WebGL funtion is executed. | |
void | debugger () |
GL function to activate an existing texture. More... | |
void | activeTexture (GLenum texture) |
GL function to activate an existing texture. More... | |
void | attachShader (Program program, Shader shader) |
GL function to attach a shader to a program. More... | |
void | bindAttribLocation (Program program, unsigned index, const std::string &name) |
GL function to bind an attribute to a given location. More... | |
void | bindBuffer (GLenum target, Buffer buffer) |
GL function to bind a buffer to a target. More... | |
void | bindFramebuffer (GLenum target, Framebuffer framebuffer) |
GL function to bind a frame buffer to a target. More... | |
void | bindRenderbuffer (GLenum target, Renderbuffer renderbuffer) |
GL function to bind a render buffer to a target. More... | |
void | bindTexture (GLenum target, Texture texture) |
GL function to bind a texture to a target. More... | |
void | blendColor (double red, double green, double blue, double alpha) |
GL function to set the blending color. More... | |
void | blendEquation (GLenum mode) |
GL function to set the blending equation. More... | |
void | blendEquationSeparate (GLenum modeRGB, GLenum modeAlpha) |
GL function that sets separate blending functions for RGB and alpha. More... | |
void | blendFunc (GLenum sfactor, GLenum dfactor) |
GL function to configure the blending function. More... | |
void | blendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) |
GL function that configures the blending function. More... | |
void | bufferData (GLenum target, int size, GLenum usage) |
glBufferData - create and initialize a buffer object's data store More... | |
void | bufferData (GLenum target, ArrayBuffer res, GLenum usage) |
glBufferData - create and initialize a buffer object's data store from an ArrayBuffer More... | |
void | bufferData (GLenum target, ArrayBuffer res, unsigned arrayBufferOffset, unsigned arrayBufferSize, GLenum usage) |
glBufferData - create and initialize a buffer object's data store from an ArrayBuffer More... | |
template<typename Iterator > | |
void | bufferDatafv (GLenum target, const Iterator begin, const Iterator end, GLenum usage) |
GL function that loads float or double data in a VBO. More... | |
template<typename Iterator > | |
void | bufferDataiv (GLenum target, const Iterator begin, const Iterator end, GLenum usage, GLenum type) |
GL function that updates an existing VBO with new integer data. More... | |
template<typename Iterator > | |
void | bufferSubDatafv (GLenum target, unsigned offset, const Iterator begin, const Iterator end) |
GL function that updates an existing VBO with new float or double data. More... | |
template<typename Iterator > | |
void | bufferSubDataiv (GLenum target, unsigned offset, const Iterator begin, Iterator end, GLenum type) |
GL function that loads integer data in a VBO. More... | |
void | bufferSubData (GLenum target, unsigned offset, ArrayBuffer res) |
Initialize a buffer object's data store from an ArrayBuffer. More... | |
void | bufferSubData (GLenum target, unsigned offset, ArrayBuffer res, unsigned arrayBufferOffset, unsigned size) |
Initialize a buffer object's data store from an ArrayBuffer. More... | |
void | clear (WFlags< GLenum > mask) |
GL function that clears the given buffers. More... | |
void | clearColor (double r, double g, double b, double a) |
GL function that sets the clear color of the color buffer. More... | |
void | clearDepth (double depth) |
GL function that configures the depth to be set when the depth buffer is cleared. More... | |
void | clearStencil (int s) |
GL function. More... | |
void | colorMask (bool red, bool green, bool blue, bool alpha) |
GL function. More... | |
void | compileShader (Shader shader) |
GL function to compile a shader. More... | |
void | copyTexImage2D (GLenum target, int level, GLenum internalformat, int x, int y, unsigned width, unsigned height, int border) |
GL function to copy a texture image. More... | |
void | copyTexSubImage2D (GLenum target, int level, int xoffset, int yoffset, int x, int y, unsigned width, unsigned height) |
GL function that copies a part of a texture image. More... | |
Buffer | createBuffer () |
GL function that creates an empty VBO. More... | |
ArrayBuffer | createAndLoadArrayBuffer (const std::string &url) |
Function that creates an ArrayBuffer by loading data from a given URL. More... | |
Framebuffer | createFramebuffer () |
GL function that creates a frame buffer object. More... | |
Program | createProgram () |
GL function that creates an empty program. More... | |
Renderbuffer | createRenderbuffer () |
GL function that creates a render buffer object. More... | |
Shader | createShader (GLenum shader) |
GL function that creates an empty shader. More... | |
Texture | createTexture () |
GL function that creates an empty texture. More... | |
Texture | createTextureAndLoad (const std::string &url) |
GL function that creates an image texture. More... | |
void | cullFace (GLenum mode) |
GL function that configures the backface culling mode. More... | |
void | deleteBuffer (Buffer buffer) |
GL function that deletes a VBO. More... | |
void | deleteFramebuffer (Framebuffer framebuffer) |
GL function that deletes a frame buffer. More... | |
void | deleteProgram (Program program) |
GL function that deletes a program. More... | |
void | deleteRenderbuffer (Renderbuffer renderbuffer) |
GL function that deletes a render buffer. More... | |
void | deleteShader (Shader shader) |
GL function that depetes a shader. More... | |
void | deleteTexture (Texture texture) |
GL function that deletes a texture. More... | |
void | depthFunc (GLenum func) |
GL function to set the depth test function. More... | |
void | depthMask (bool flag) |
GL function that enables or disables writing to the depth buffer. More... | |
void | depthRange (double zNear, double zFar) |
GL function that specifies to what range the normalized [-1,1] z values should match. More... | |
void | detachShader (Program program, Shader shader) |
GL function that detaches a shader from a program. More... | |
void | disable (GLenum cap) |
GL function to disable features. More... | |
void | disableVertexAttribArray (AttribLocation index) |
GL function to disable the vertex attribute array. More... | |
void | drawArrays (GLenum mode, int first, unsigned count) |
GL function to draw a VBO. More... | |
void | drawElements (GLenum mode, unsigned count, GLenum type, unsigned offset) |
GL function to draw indexed VBOs. More... | |
void | enable (GLenum cap) |
GL function to enable features. More... | |
void | enableVertexAttribArray (AttribLocation index) |
GL function to enable the vertex attribute array. More... | |
void | finish () |
GL function to wait until given commands are executed. More... | |
void | flush () |
GL function to force execution of GL commands in finite time. More... | |
void | framebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, Renderbuffer renderbuffer) |
GL function to attach the given renderbuffer to the currently bound frame buffer. More... | |
void | framebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, Texture texture, int level) |
GL function to render directly into a texture image. More... | |
void | frontFace (GLenum mode) |
GL function that specifies which side of a triangle is the front side. More... | |
void | generateMipmap (GLenum target) |
GL function that generates a set of mipmaps for a texture object. More... | |
AttribLocation | getAttribLocation (Program program, const std::string &attrib) |
GL function to retrieve an attribute's location in a Program. More... | |
UniformLocation | getUniformLocation (Program program, const std::string location) |
GL function to retrieve a Uniform's location in a Program. More... | |
void | hint (GLenum target, GLenum mode) |
GL function to give hints to the render pipeline. More... | |
void | lineWidth (double width) |
GL function to set the line width. More... | |
void | linkProgram (Program program) |
GL function to link a program. More... | |
void | pixelStorei (GLenum pname, int param) |
GL function to set the pixel storage mode. More... | |
void | polygonOffset (double factor, double units) |
GL function to apply modifications to Z values. More... | |
void | renderbufferStorage (GLenum target, GLenum internalformat, unsigned width, unsigned height) |
GL function to allocate the appropriate amount of memory for a render buffer. More... | |
void | sampleCoverage (double value, bool invert) |
GL function to set multisample parameters. More... | |
void | scissor (int x, int y, unsigned width, unsigned height) |
GL function to define the scissor box. More... | |
void | shaderSource (Shader shader, const std::string &src) |
GL function to set a shader's source code. More... | |
void | stencilFunc (GLenum func, int ref, unsigned mask) |
GL function to set stencil test parameters. More... | |
void | stencilFuncSeparate (GLenum face, GLenum func, int ref, unsigned mask) |
GL function to set stencil test parameters for front and/or back stencils. More... | |
void | stencilMask (unsigned mask) |
GL function to control which bits are to be written in the stencil buffer. More... | |
void | stencilMaskSeparate (GLenum face, unsigned mask) |
GL function to control which bits are written to the front and/or back stencil buffers. More... | |
void | stencilOp (GLenum fail, GLenum zfail, GLenum zpass) |
GL function to set stencil test actions. More... | |
void | stencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) |
GL function to set front and/or back stencil test actions separately. More... | |
void | texImage2D (GLenum target, int level, GLenum internalformat, unsigned width, unsigned height, int border, GLenum format) |
GL function to reserve space for a 2D texture, without specifying its contents. More... | |
void | texImage2D (GLenum target, int level, GLenum internalformat, GLenum format, GLenum type, WImage *image) |
GL function to load a 2D texture from a WImage. More... | |
void | texImage2D (GLenum target, int level, GLenum internalformat, GLenum format, GLenum type, WVideo *video) |
GL function to load a 2D texture from a WVideo. More... | |
void | texImage2D (GLenum target, int level, GLenum internalformat, GLenum format, GLenum type, Texture texture) |
GL function to load a 2D texture loaded with createTextureAndLoad() More... | |
void | texParameteri (GLenum target, GLenum pname, GLenum param) |
GL function to set texture parameters. More... | |
void | uniform1f (const UniformLocation &location, double x) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform1fv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform1i (const UniformLocation &location, int x) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform1iv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform2f (const UniformLocation &location, double x, double y) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform2fv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform2i (const UniformLocation &location, int x, int y) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform2iv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform3f (const UniformLocation &location, double x, double y, double z) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform3fv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform3i (const UniformLocation &location, int x, int y, int z) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform3iv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform4f (const UniformLocation &location, double x, double y, double z, double w) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform4fv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
void | uniform4i (const UniformLocation &location, int x, int y, int z, int w) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename Array > | |
void | uniform4iv (const UniformLocation &location, const Array *value) |
GL function to set the value of a uniform variable of the current program. More... | |
template<typename MatrixType > | |
void | uniformMatrix2fv (const UniformLocation &location, bool transpose, const MatrixType *value) |
GL function to set the value of a uniform matrix of the current program. More... | |
template<typename T > | |
void | uniformMatrix2 (const UniformLocation &location, const WGenericMatrix< T, 2, 2 > &m) |
GL function to set the value of a uniform matrix of the current program. More... | |
template<typename MatrixType > | |
void | uniformMatrix3fv (const UniformLocation &location, bool transpose, const MatrixType *value) |
GL function to set the value of a uniform matrix of the current program. More... | |
template<typename T > | |
void | uniformMatrix3 (const UniformLocation &location, const WGenericMatrix< T, 3, 3 > &m) |
GL function to set the value of a uniform matrix of the current program. More... | |
template<typename MatrixType > | |
void | uniformMatrix4fv (const UniformLocation &location, bool transpose, const MatrixType *value) |
GL function to set the value of a uniform matrix of the current program. More... | |
template<typename T > | |
void | uniformMatrix4 (const UniformLocation &location, const WGenericMatrix< T, 4, 4 > &m) |
GL function to set the value of a uniform matrix of the current program. More... | |
void | uniformMatrix4 (const UniformLocation &location, const JavaScriptMatrix4x4 &m) |
GL function to set the value of a uniform matrix of the current program. More... | |
void | useProgram (Program program) |
GL function to set the current active shader program. More... | |
void | validateProgram (Program program) |
GL function to validate a program. More... | |
void | vertexAttrib1f (AttribLocation location, double x) |
GL function to set the value of an attribute of the current program. More... | |
template<typename Array > | |
void | vertexAttrib1fv (AttribLocation location, const Array *values) |
GL function to set the value of an attribute of the current program. More... | |
void | vertexAttrib2f (AttribLocation location, double x, double y) |
GL function to set the value of an attribute of the current program. More... | |
template<typename Array > | |
void | vertexAttrib2fv (AttribLocation location, const Array *values) |
GL function to set the value of an attribute of the current program. More... | |
void | vertexAttrib3f (AttribLocation location, double x, double y, double z) |
GL function to set the value of an attribute of the current program. More... | |
template<typename Array > | |
void | vertexAttrib3fv (AttribLocation location, const Array *values) |
GL function to set the value of an attribute of the current program. More... | |
void | vertexAttrib4f (AttribLocation location, double x, double y, double z, double w) |
GL function to set the value of an attribute of the current program. More... | |
template<typename Array > | |
void | vertexAttrib4fv (AttribLocation location, const Array *values) |
GL function to set the value of an attribute of the current program. More... | |
void | vertexAttribPointer (AttribLocation location, int size, GLenum type, bool normalized, unsigned stride, unsigned offset) |
GL function to bind a VBO to an attribute. More... | |
void | viewport (int x, int y, unsigned width, unsigned height) |
GL function to set the viewport. More... | |
Additional WebGL methods | |
These methods are used to render WebGL content, but have no equivalent in WebGL. Like the WebGL methods, you can use the WebGL methods in your resizeGL(), paintGL() and updateGL() specializations. It makes no sense to call these methods outside those functions. | |
JavaScriptMatrix4x4 | createJavaScriptMatrix4 () |
Create a matrix that can be manipulated in client-side JavaScript. | |
template<typename T > | |
void | setJavaScriptMatrix4 (const JavaScriptMatrix4x4 &jsm, const WGenericMatrix< T, 4, 4 > &m) |
Set the value of a client-side JavaScript matrix created by createJavaScriptMatrix4x4() | |
![]() | |
WInteractWidget (WContainerWidget *parent=0) | |
Create an InteractWidget with optional parent. | |
EventSignal< WKeyEvent > & | keyWentDown () |
Event signal emitted when a keyboard key is pushed down. More... | |
EventSignal< WKeyEvent > & | keyPressed () |
Event signal emitted when a "character" was entered. More... | |
EventSignal< WKeyEvent > & | keyWentUp () |
Event signal emitted when a keyboard key is released. More... | |
EventSignal & | enterPressed () |
Event signal emitted when enter was pressed. More... | |
EventSignal & | escapePressed () |
Event signal emitted when escape was pressed. More... | |
EventSignal< WMouseEvent > & | clicked () |
Event signal emitted when a mouse key was clicked on this widget. More... | |
EventSignal< WMouseEvent > & | doubleClicked () |
Event signal emitted when a mouse key was double clicked on this widget. More... | |
EventSignal< WMouseEvent > & | mouseWentDown () |
Event signal emitted when a mouse key was pushed down on this widget. More... | |
EventSignal< WMouseEvent > & | mouseWentUp () |
Event signal emitted when a mouse key was released on this widget. More... | |
EventSignal< WMouseEvent > & | mouseWentOut () |
Event signal emitted when the mouse went out of this widget. More... | |
EventSignal< WMouseEvent > & | mouseWentOver () |
Event signal emitted when the mouse entered this widget. More... | |
EventSignal< WMouseEvent > & | mouseMoved () |
Event signal emitted when the mouse moved over this widget. More... | |
EventSignal< WMouseEvent > & | mouseDragged () |
Event signal emitted when the mouse is dragged over this widget. More... | |
EventSignal< WMouseEvent > & | mouseWheel () |
Event signal emitted when the mouse scroll wheel was used. More... | |
EventSignal< WTouchEvent > & | touchStarted () |
Event signal emitted when a finger is placed on the screen. More... | |
EventSignal< WTouchEvent > & | touchEnded () |
Event signal emitted when a finger is removed from the screen. More... | |
EventSignal< WTouchEvent > & | touchMoved () |
Event signal emitted when a finger, which is already placed on the screen, is moved across the screen. More... | |
EventSignal< WGestureEvent > & | gestureStarted () |
Event signal emitted when a gesture is started. More... | |
EventSignal< WGestureEvent > & | gestureChanged () |
Event signal emitted when a gesture is changed. More... | |
EventSignal< WGestureEvent > & | gestureEnded () |
Event signal emitted when a gesture is ended. More... | |
void | setDraggable (const std::string &mimeType, WWidget *dragWidget=0, bool isDragWidgetOnly=false, WObject *sourceWidget=0) |
Configure dragging for drag and drop. More... | |
void | setMouseOverDelay (int delay) |
Sets a delay for the mouse over event. More... | |
int | mouseOverDelay () const |
Returns the mouse over signal delay. More... | |
virtual void | load () |
Loads content just before the widget is used. More... | |
virtual bool | isEnabled () const |
Returns whether the widget is enabled. More... | |
![]() | |
WWebWidget (WContainerWidget *parent=0) | |
Construct a WebWidget with a given parent. More... | |
virtual void | setPositionScheme (PositionScheme scheme) |
Sets the CSS position scheme. More... | |
virtual PositionScheme | positionScheme () const |
Returns the CSS position scheme. More... | |
virtual void | setOffsets (const WLength &offset, WFlags< Side > sides=All) |
Sets CSS offsets for a non-statically positioned widget. More... | |
virtual WLength | offset (Side s) const |
Returns a CSS offset. More... | |
virtual WLength | width () const |
Returns the width. More... | |
virtual WLength | height () const |
Returns the height. More... | |
virtual void | setMinimumSize (const WLength &width, const WLength &height) |
Sets a minimum size. More... | |
virtual WLength | minimumWidth () const |
Returns the minimum width. More... | |
virtual WLength | minimumHeight () const |
Returns the minimum height. More... | |
virtual void | setMaximumSize (const WLength &width, const WLength &height) |
Sets a maximum size. More... | |
virtual WLength | maximumWidth () const |
Returns the maximum width. More... | |
virtual WLength | maximumHeight () const |
Returns the maximum height. More... | |
virtual void | setLineHeight (const WLength &height) |
Sets the CSS line height for contained text. | |
virtual WLength | lineHeight () const |
Returns the CSS line height for contained text. More... | |
virtual void | setFloatSide (Side s) |
Specifies a CSS float side. More... | |
virtual Side | floatSide () const |
Returns the CSS float side. More... | |
virtual void | setClearSides (WFlags< Side > sides) |
Sets the sides that should be cleared of floats. More... | |
virtual WFlags< Side > | clearSides () const |
Returns the sides that should remain empty. More... | |
virtual void | setMargin (const WLength &margin, WFlags< Side > sides=All) |
Sets CSS margins around the widget. More... | |
virtual WLength | margin (Side side) const |
Returns a CSS margin set. More... | |
virtual void | setHiddenKeepsGeometry (bool enabled) |
Sets whether the widget keeps its geometry when hidden. More... | |
virtual bool | hiddenKeepsGeometry () const |
Returns whether the widget keeps its geometry when hidden. More... | |
virtual void | setHidden (bool hidden, const WAnimation &animation=WAnimation()) |
Hides or shows the widget. More... | |
virtual bool | isHidden () const |
Returns whether the widget is set hidden. More... | |
virtual bool | isVisible () const |
Returns whether the widget is visible. More... | |
virtual void | setDisabled (bool disabled) |
Sets whether the widget is disabled. More... | |
virtual bool | isDisabled () const |
Returns whether the widget is set disabled. More... | |
virtual void | setPopup (bool popup) |
Lets the widget overlay over other sibling widgets. More... | |
virtual bool | isPopup () const |
Returns whether the widget is overlayed. More... | |
virtual void | setInline (bool isInline) |
Sets whether the widget is displayed inline or as a block. More... | |
virtual bool | isInline () const |
Returns whether the widget is displayed inline or as block. More... | |
virtual void | setDecorationStyle (const WCssDecorationStyle &style) |
Sets a CSS decoration style. More... | |
virtual WCssDecorationStyle & | decorationStyle () |
Returns the decoration style of this widget. More... | |
virtual void | setStyleClass (const WString &styleClass) |
Sets (one or more) CSS style classes. More... | |
virtual WString | styleClass () const |
Returns the CSS style class. More... | |
virtual void | addStyleClass (const WString &styleClass, bool force=false) |
Adds a CSS style class. More... | |
virtual void | removeStyleClass (const WString &styleClass, bool force=false) |
Removes a CSS style class. More... | |
virtual bool | hasStyleClass (const WString &styleClass) const |
Returns whether the widget has a style class. | |
virtual void | setVerticalAlignment (AlignmentFlag alignment, const WLength &length=WLength()) |
Sets the vertical alignment. More... | |
virtual AlignmentFlag | verticalAlignment () const |
Returns the vertical alignment. More... | |
virtual WLength | verticalAlignmentLength () const |
Returns the fixed vertical alignment that was set. More... | |
virtual void | setToolTip (const WString &text, TextFormat textFormat=PlainText) |
Sets a tooltip. More... | |
virtual const WString & | toolTip () const |
Returns the tooltip. | |
virtual void | refresh () |
Refresh the widget. More... | |
virtual void | setAttributeValue (const std::string &name, const WString &value) |
Sets an attribute value. More... | |
virtual WString | attributeValue (const std::string &name) const |
Returns an attribute value. More... | |
virtual void | setJavaScriptMember (const std::string &name, const std::string &value) |
Sets a JavaScript member. More... | |
virtual std::string | javaScriptMember (const std::string &name) const |
Returns the value of a JavaScript member. More... | |
virtual void | callJavaScriptMember (const std::string &name, const std::string &args) |
Calls a JavaScript member. More... | |
virtual bool | loaded () const |
Returns whether this widget has been loaded. More... | |
virtual void | setTabIndex (int index) |
Sets the tab index. More... | |
virtual int | tabIndex () const |
Returns the tab index. More... | |
virtual void | setId (const std::string &id) |
Sets the CSS Id. More... | |
virtual WWidget * | find (const std::string &name) |
Finds a descendent widget by name. More... | |
virtual void | setSelectable (bool selectable) |
Sets as selectable. More... | |
virtual void | doJavaScript (const std::string &javascript) |
Executes the given JavaScript statements when the widget is rendered or updated. More... | |
virtual const std::string | id () const |
Returns the (unique) identifier for this object. More... | |
void | setLoadLaterWhenInvisible (bool) |
Change the way the widget is loaded when invisible. More... | |
const std::vector< WWidget * > & | children () const |
Returns contained widgets. More... | |
Signal & | childrenChanged () |
Signal emitted when children have been added or removed. More... | |
![]() | |
virtual | ~WWidget () |
Destructor. More... | |
WWidget * | parent () const |
Returns the parent widget. More... | |
virtual void | removeChild (WObject *child) |
Removes a child object. More... | |
void | setWidth (const WLength &width) |
Sets the width. More... | |
void | setHeight (const WLength &height) |
Sets the height. More... | |
virtual void | positionAt (const WWidget *widget, Orientation orientation=Vertical) |
Positions a widget next to another widget. More... | |
virtual void | toggleStyleClass (const WString &styleClass, bool add, bool force=false) |
Toggles a CSS style class. | |
std::string | jsRef () const |
Returns a JavaScript expression to the corresponding DOM node. More... | |
virtual void | acceptDrops (const std::string &mimeType, const WString &hoverStyleClass=WString()) |
Sets a mime type to be accepted for dropping. More... | |
virtual void | stopAcceptDrops (const std::string &mimeType) |
Indicates that a mime type is no longer accepted for dropping. More... | |
virtual void | htmlText (std::ostream &out) |
Streams the (X)HTML representation. More... | |
bool | isRendered () const |
Returns whether the widget is rendered. More... | |
void | hide () |
Hides the widget. More... | |
void | animateHide (const WAnimation &animation) |
Hides the widget using an animation. More... | |
void | show () |
Shows the widget. More... | |
void | animateShow (const WAnimation &animation) |
Shows the widget using an animation. More... | |
void | enable () |
Enables the widget. More... | |
void | disable () |
Disable thes widget. More... | |
bool | layoutSizeAware () const |
Returns whether the widget is layout size aware. More... | |
![]() | |
WObject (WObject *parent=0) | |
Create a WObject with a given parent object. More... | |
virtual | ~WObject () |
Destructor. More... | |
virtual void | setObjectName (const std::string &name) |
Sets an object name. More... | |
virtual std::string | objectName () const |
Returns the object name. More... | |
void | resetLearnedSlots () |
Resets learned stateless slot implementations. More... | |
template<class T > | |
void | resetLearnedSlot (void(T::*method)()) |
Resets a learned stateless slot implementation. More... | |
template<class T > | |
WStatelessSlot * | implementStateless (void(T::*method)()) |
Declares a slot to be stateless and learn client-side behaviour on first invocation. More... | |
template<class T > | |
WStatelessSlot * | implementStateless (void(T::*method)(), void(T::*undoMethod)()) |
Declares a slot to be stateless and learn client-side behaviour in advance. More... | |
template<class T > | |
WStatelessSlot * | implementJavaScript (void(T::*method)(), const std::string &jsCode) |
Provides a JavaScript implementation for a method. More... | |
void | addChild (WObject *child) |
Adds a child object. More... | |
const std::vector< WObject * > & | children () const |
Returns the children. | |
WObject * | parent () const |
Returns the parent object. | |
Static Public Member Functions | |
static void | enableClientErrorChecks (bool enable=true) |
enable client-side error messages (read detailed doc!) More... | |
Protected Member Functions | |
virtual void | render (WFlags< RenderFlag > flags) |
Renders the widget. More... | |
![]() | |
virtual void | propagateSetEnabled (bool enabled) |
Propagates that a widget was enabled or disabled through children. More... | |
![]() | |
virtual void | enableAjax () |
Progresses to an Ajax-enabled widget. More... | |
![]() | |
void | setLayoutSizeAware (bool sizeAware) |
Sets the widget to be aware of its size set by a layout manager. More... | |
WWidget (WContainerWidget *parent=0) | |
Creates a widget. More... | |
virtual void | dropEvent (WDropEvent dropEvent) |
Handles a drop event. More... | |
virtual int | boxPadding (Orientation orientation) const |
Returns the widget's built-in padding. More... | |
virtual int | boxBorder (Orientation orientation) const |
Returns the widget's built-in border width. More... | |
void | scheduleRender (WFlags< RepaintFlag > flags=0) |
Schedules rerendering of the widget. More... | |
virtual WStatelessSlot * | getStateless (Method method) |
On-demand stateless slot implementation. More... | |
Private Member Functions | |
virtual void | layoutSizeChanged (int width, int height) |
Virtual method that indicates a size change. More... | |
Additional Inherited Members | |
![]() | |
static WObject * | sender () |
Returns the sender of the current slot call. More... | |
WebGL support class.
The WGLWidget class is an interface to the HTML5 WebGL infrastructure. Its implementation started based on the working drafts of the Khronos group, and will be updated as the standard stabilizes. To fully understand WebGL, it is recommended to read the WebGL standard in addition to this documentation.
The most recent version of the WebGL specification can be found here: https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html
This widget is work in progress. The API may change in the future because of new features, reorganizations or changes in the WebGL draft.
The goal of the WGLWidget class is to provide a method to render 3D structures in the browser, where rendering and rerendering is normally done at the client side in JavaScript without interaction from the server, in order to obtain a smooth user interaction. Unless the scene requires server-side updates, there is no communication with the server.
The rendering interface resembles to OpenGL ES, the same standard as WebGL is based on. This is a stripped down version of the normal OpenGL as we usually find them on desktops. Many stateful OpenGL features are not present in OpenGL ES: no modelview and camera transformation stacks, no default lighting models, no support for other rendering methods than through VBOs, ... Therefore much existing example code for OpenGL applications and shaders will not work on WebGL without modifications. The 'learning webgl' web site at http://learningwebgl.com/ is a good starting point to get familiar with WebGL.
To use a WGLWidget, you must derive from it and reimplement the painter methods. Usually, you will always need to implement initializeGL() and paintGL(). Optionally, you may choose to implement resizeGL() (if your widget does not have a fixed size), and updateGL(). If you need to modify the painting methods, a repaint is triggered by calling the repaintGL() method. The default behaviour for any of these four painting functions is to do nothing.
The four painter methods (initializeGL(), resizeGL(), paintGL() and updateGL()) all record JavaScript which is sent to the browser. The JavaScript code of paintGL() is cached client-side, and may be executed many times, e.g. to repaint a scene from different viewpoints. The JavaScript code of initializeGL(), resizeGL() and updateGL() are intended for OpenGL state updates, and is therefore only executed once on the client and is then discarded.
There are four painting methods that you may implement in a specialization of this class. The purpose of these functions is to register what JavaScript code has to be executed to render a scene. Through invocations of the WebGL functions documented below, Wt records the JavaScript calls that have to be invoked in the browser.
The WebGL functions are intended to be used exclusively from within the invocation of the four callback functions mentioned above. In order to manually trigger the execution of these function, use the repaintGL().
A WGLWidget must be given a size explicitly, or must be put inside a layout manager that manages its width and height. The behaviour of a WGLWidget that was not given a size is undefined.
Using createAndLoadArrayBuffer(), you can load an array buffer in binary format from an URL. This will cause the client to fetch the given URL, and make the contents of the file available in an ArrayBuffer, which can then be used by BufferData() to bind them to an OpenGL buffer. This is ideal to load VBO buffers in a faster way, as it avoids converting floats to text strings on the server and then back to floats on the client. You can combine this with the use of WResource (e.g. WMemoryResource) to send an std::vector of vertices to the client.
The WGLWidget provides the WGLWidget::JavaScriptMatrix4x4 class as a mechanism to use client-side modifiable matrices in the render functions. These matrices can be used identically to the 'constant', with the advantage that there is no need to have a roundtrip to the server to redraw the scene when they are changed. As such, they are ideal for mouse-based camera manipulations, timer triggered animations, or object manipulations.
Note: the client side matrices are currently not yet communicated back to the server, but that is an implementation idea for the future.
Specifies what WebGL function needs to be updated.
Enumerator | |
---|---|
PAINT_GL |
refresh paintGL() |
RESIZE_GL |
refresh resizeGL() |
UPDATE_GL |
refresh updateGL() |
The enourmous GLenum.
This enum contains all numeric constants defined by the WebGL standard.
WGLWidget::WGLWidget | ( | WContainerWidget * | parent) |
Construct a WebGL widget.
Before the first rendering, you must apply a size to the WGLWidget.
/code /endcode
void WGLWidget::activeTexture | ( | GLenum | texture) |
GL function to activate an existing texture.
void WGLWidget::attachShader | ( | Program | program, |
Shader | shader | ||
) |
GL function to attach a shader to a program.
void WGLWidget::bindAttribLocation | ( | Program | program, |
unsigned | index, | ||
const std::string & | name | ||
) |
GL function to bind an attribute to a given location.
void WGLWidget::bindBuffer | ( | GLenum | target, |
Buffer | buffer | ||
) |
GL function to bind a buffer to a target.
void WGLWidget::bindFramebuffer | ( | GLenum | target, |
Framebuffer | framebuffer | ||
) |
GL function to bind a frame buffer to a target.
void WGLWidget::bindRenderbuffer | ( | GLenum | target, |
Renderbuffer | renderbuffer | ||
) |
GL function to bind a render buffer to a target.
void WGLWidget::bindTexture | ( | GLenum | target, |
Texture | texture | ||
) |
GL function to bind a texture to a target.
void WGLWidget::blendColor | ( | double | red, |
double | green, | ||
double | blue, | ||
double | alpha | ||
) |
GL function to set the blending color.
void WGLWidget::blendEquation | ( | GLenum | mode) |
GL function to set the blending equation.
GL function that sets separate blending functions for RGB and alpha.
GL function to configure the blending function.
void WGLWidget::blendFuncSeparate | ( | GLenum | srcRGB, |
GLenum | dstRGB, | ||
GLenum | srcAlpha, | ||
GLenum | dstAlpha | ||
) |
GL function that configures the blending function.
glBufferData - create and initialize a buffer object's data store
Set the size of the currently bound WebGLBuffer object for the passed target. The buffer is initialized to 0. glBufferData() OpenGL ES manpage
glBufferData - create and initialize a buffer object's data store from an ArrayBuffer
Set the size and contents of the currently bound WebGLBuffer object to be a copy of the given ArrayBuffer. glBufferData() OpenGL ES manpage
void WGLWidget::bufferData | ( | GLenum | target, |
ArrayBuffer | res, | ||
unsigned | arrayBufferOffset, | ||
unsigned | arrayBufferSize, | ||
GLenum | usage | ||
) |
glBufferData - create and initialize a buffer object's data store from an ArrayBuffer
Set the size of the currently bound WebGLBuffer object to arrayBufferSize, and copy the contents of the ArrayBuffer to the buffer, starting at the given offset. glBufferData() OpenGL ES manpage
void Wt::WGLWidget::bufferDatafv | ( | GLenum | target, |
const Iterator | begin, | ||
const Iterator | end, | ||
GLenum | usage | ||
) |
GL function that loads float or double data in a VBO.
Unlike the C version, we can't accept a void * here. We must be able to interpret the buffer's data in order to transmit it to the JS side.
Later we may also want versions with strides and offsets to cope with more complex buffer layouts that we typically see on desktop WebGL apps; suggestions to improve this are welcome
void Wt::WGLWidget::bufferDataiv | ( | GLenum | target, |
const Iterator | begin, | ||
const Iterator | end, | ||
GLenum | usage, | ||
GLenum | type | ||
) |
GL function that updates an existing VBO with new integer data.
void WGLWidget::bufferSubData | ( | GLenum | target, |
unsigned | offset, | ||
ArrayBuffer | res | ||
) |
Initialize a buffer object's data store from an ArrayBuffer.
Load the data of the currently bound WebGLBuffer object from the given ArrayBuffer. The first byte of the resource data will be written at the given offset of the currently bound buffer.
glBufferSubData() OpenGL ES manpage
void WGLWidget::bufferSubData | ( | GLenum | target, |
unsigned | offset, | ||
ArrayBuffer | res, | ||
unsigned | arrayBufferOffset, | ||
unsigned | size | ||
) |
Initialize a buffer object's data store from an ArrayBuffer.
Load the data of the currently bound WebGLBuffer object from the given ArrayBuffer. The byte at position arrayBufferOffset will be written to the currently bound buffer at position offset.
glBufferSubData() OpenGL ES manpage
void Wt::WGLWidget::bufferSubDatafv | ( | GLenum | target, |
unsigned | offset, | ||
const Iterator | begin, | ||
const Iterator | end | ||
) |
GL function that updates an existing VBO with new float or double data.
void Wt::WGLWidget::bufferSubDataiv | ( | GLenum | target, |
unsigned | offset, | ||
const Iterator | begin, | ||
Iterator | end, | ||
GLenum | type | ||
) |
GL function that loads integer data in a VBO.
void WGLWidget::clear | ( | WFlags< GLenum > | mask) |
GL function that clears the given buffers.
void WGLWidget::clearColor | ( | double | r, |
double | g, | ||
double | b, | ||
double | a | ||
) |
GL function that sets the clear color of the color buffer.
void WGLWidget::clearDepth | ( | double | depth) |
GL function that configures the depth to be set when the depth buffer is cleared.
void WGLWidget::clearStencil | ( | int | s) |
GL function.
void WGLWidget::colorMask | ( | bool | red, |
bool | green, | ||
bool | blue, | ||
bool | alpha | ||
) |
GL function.
void WGLWidget::compileShader | ( | Shader | shader) |
GL function to compile a shader.
void WGLWidget::copyTexImage2D | ( | GLenum | target, |
int | level, | ||
GLenum | internalformat, | ||
int | x, | ||
int | y, | ||
unsigned | width, | ||
unsigned | height, | ||
int | border | ||
) |
GL function to copy a texture image.
void WGLWidget::copyTexSubImage2D | ( | GLenum | target, |
int | level, | ||
int | xoffset, | ||
int | yoffset, | ||
int | x, | ||
int | y, | ||
unsigned | width, | ||
unsigned | height | ||
) |
GL function that copies a part of a texture image.
WGLWidget::ArrayBuffer WGLWidget::createAndLoadArrayBuffer | ( | const std::string & | url) |
Function that creates an ArrayBuffer by loading data from a given URL.
The ArrayBuffer is loaded before executing initGL. Use it to load binary data for use in bufferData() or bufferSubData().
WGLWidget::Buffer WGLWidget::createBuffer | ( | ) |
GL function that creates an empty VBO.
WGLWidget::Framebuffer WGLWidget::createFramebuffer | ( | ) |
GL function that creates a frame buffer object.
WGLWidget::Program WGLWidget::createProgram | ( | ) |
GL function that creates an empty program.
WGLWidget::Renderbuffer WGLWidget::createRenderbuffer | ( | ) |
GL function that creates a render buffer object.
WGLWidget::Shader WGLWidget::createShader | ( | GLenum | shader) |
GL function that creates an empty shader.
WGLWidget::Texture WGLWidget::createTexture | ( | ) |
GL function that creates an empty texture.
WGLWidget::Texture WGLWidget::createTextureAndLoad | ( | const std::string & | url) |
GL function that creates an image texture.
void WGLWidget::cullFace | ( | GLenum | mode) |
GL function that configures the backface culling mode.
void WGLWidget::debugger | ( | ) |
GL function to activate an existing texture.
void WGLWidget::deleteBuffer | ( | Buffer | buffer) |
GL function that deletes a VBO.
void WGLWidget::deleteFramebuffer | ( | Framebuffer | framebuffer) |
GL function that deletes a frame buffer.
void WGLWidget::deleteProgram | ( | Program | program) |
GL function that deletes a program.
void WGLWidget::deleteRenderbuffer | ( | Renderbuffer | renderbuffer) |
GL function that deletes a render buffer.
void WGLWidget::deleteShader | ( | Shader | shader) |
GL function that depetes a shader.
void WGLWidget::deleteTexture | ( | Texture | texture) |
GL function that deletes a texture.
void WGLWidget::depthFunc | ( | GLenum | func) |
GL function to set the depth test function.
void WGLWidget::depthMask | ( | bool | flag) |
GL function that enables or disables writing to the depth buffer.
void WGLWidget::depthRange | ( | double | zNear, |
double | zFar | ||
) |
GL function that specifies to what range the normalized [-1,1] z values should match.
void WGLWidget::detachShader | ( | Program | program, |
Shader | shader | ||
) |
GL function that detaches a shader from a program.
void WGLWidget::disable | ( | GLenum | cap) |
GL function to disable features.
void WGLWidget::disableVertexAttribArray | ( | AttribLocation | index) |
GL function to disable the vertex attribute array.
void WGLWidget::drawArrays | ( | GLenum | mode, |
int | first, | ||
unsigned | count | ||
) |
GL function to draw a VBO.
GL function to draw indexed VBOs.
void WGLWidget::enable | ( | GLenum | cap) |
GL function to enable features.
|
static |
enable client-side error messages (read detailed doc!)
This option will add client-side code to check the result of every WebGL call, and will popup an error dialog if a WebGL call returned an error. The JavaScript then invokes the client-side debugger. This code is intended to test your application, and should not be used in production.
Note that this option will not have any effect unless both Wt and your application is built with WT_WGLWIDGET_DEBUG defined.
void WGLWidget::enableVertexAttribArray | ( | AttribLocation | index) |
GL function to enable the vertex attribute array.
void WGLWidget::finish | ( | ) |
GL function to wait until given commands are executed.
This call is transfered to JS, but the server will never wait on this call.
void WGLWidget::flush | ( | ) |
GL function to force execution of GL commands in finite time.
void WGLWidget::framebufferRenderbuffer | ( | GLenum | target, |
GLenum | attachment, | ||
GLenum | renderbuffertarget, | ||
Renderbuffer | renderbuffer | ||
) |
GL function to attach the given renderbuffer to the currently bound frame buffer.
void WGLWidget::framebufferTexture2D | ( | GLenum | target, |
GLenum | attachment, | ||
GLenum | textarget, | ||
Texture | texture, | ||
int | level | ||
) |
GL function to render directly into a texture image.
void WGLWidget::frontFace | ( | GLenum | mode) |
GL function that specifies which side of a triangle is the front side.
void WGLWidget::generateMipmap | ( | GLenum | target) |
GL function that generates a set of mipmaps for a texture object.
WGLWidget::AttribLocation WGLWidget::getAttribLocation | ( | Program | program, |
const std::string & | attrib | ||
) |
GL function to retrieve an attribute's location in a Program.
WGLWidget::UniformLocation WGLWidget::getUniformLocation | ( | Program | program, |
const std::string | location | ||
) |
GL function to retrieve a Uniform's location in a Program.
GL function to give hints to the render pipeline.
|
virtual |
Initialize the WebGL state when the widget is first shown.
initializeGL() is called once, when the widget is first rendered. It usually creates most of the WebGL related state: shaders, VBOs, uniform locations, ...
If this state is to be updated during the lifetime of the widget, you should specialize the updateGL() to accomodate for this.
Note: in a future version, this method will probably also be invoked on contextrestore events.
void Wt::WGLWidget::injectJS | ( | const std::string & | jsString) |
Inject JavaScript into the current js-stream.
Careful: this method directly puts the given jsString into the JavaScript stream, whatever state it current has. For example, if called in initGL(), it will put the jsString into the client-side initGL() code.
|
privatevirtual |
Virtual method that indicates a size change.
This method propagates the client-side width and height of the widget when the widget is contained by a layout manager and setLayoutSizeAware(true) was called.
Reimplemented from Wt::WWidget.
void WGLWidget::lineWidth | ( | double | width) |
GL function to set the line width.
void WGLWidget::linkProgram | ( | Program | program) |
GL function to link a program.
|
virtual |
Update the client-side painting function.
This method is invoked client-side when a repaint is required, i.e. when the repaintSlot() (a JavaScript-side JSlot) is triggered. Typical examples are: after mouse-based camera movements, after a timed update of a camera or an object's position, after a resize event (resizeGL() will also be called then), after an animation event, ... In many cases, this function will be executed client-side many many times.
Using the WebGL functions from this class, you construct a scene. The implementation tracks all JavaScript calls that need to be performed to draw the scenes, and will replay them verbatim on every trigger of the repaintSlot(). There are a few mechanisms that may be employed to change what is rendered without updating the paintGL() cache:
Updating the paintGL() cache is usually not too expensive; the VBOs, which are large in many cases, are already at the client side, while the paintGL() code only draws the VBOs. Of course, if you have to draw many separate objects, the paintGL() JS code may become large and updating is more expensive.
In order to update the paintGL() cache, call repaintGL() with the PAINT_GL parameter, which will cause the invocation of this method.
void WGLWidget::pixelStorei | ( | GLenum | pname, |
int | param | ||
) |
GL function to set the pixel storage mode.
void WGLWidget::polygonOffset | ( | double | factor, |
double | units | ||
) |
GL function to apply modifications to Z values.
|
protectedvirtual |
Renders the widget.
This function renders the widget (or an update for the widget), after this has been scheduled using scheduleRender().
The default implementation will render the widget by serializing changes to JavaScript and HTML. You may want to reimplement this widget if you have been postponing some of the layout / rendering implementation until the latest moment possible. In that case you should make sure you call the base implementation however.
Reimplemented from Wt::WWebWidget.
void WGLWidget::renderbufferStorage | ( | GLenum | target, |
GLenum | internalformat, | ||
unsigned | width, | ||
unsigned | height | ||
) |
GL function to allocate the appropriate amount of memory for a render buffer.
void WGLWidget::repaintGL | ( | WFlags< ClientSideRenderer > | which) |
Request invocation of resizeGL, paintGL and/or updateGL.
If invoked with PAINT_GL, the client-side cached paint function is updated. If invoked with RESIZE_GL or UPDATE_GL, the code will be executed once.
If invoked with multiple flags set, the order of execution will be updateGL(), resizeGL(), paintGL().
JSlot& Wt::WGLWidget::repaintSlot | ( | ) |
A JavaScript slot that repaints the widget when triggered.
This is useful for client-side initiated repaints. You may e.g. use this if you write your own client-side mouse handler, or if you updated a texture, or if you're playing a video texture.
Resizes the widget.
Specifies a fixed size for this widget, setting CSS width
and height
properties. By default a widget has automatic width and height, which sets a size for the widget following CSS rules.
When the widget is not managed by a layout manager, the automatic (natural) size of a widget depends on whether they widget is a block or inline widget:
When inserted in a layout manager, the size set will be used as a widget's preferred size, but the widget may be given a different size by the layout manager based on available space and stretch factors. The actual size given by a layout manager may be retrieved by making the widget "layout size aware", using setLayoutSizeAware(). If you have defined a "wtResize()"
JavaScript method for the widget, then this method will also be called.
The default width and height of a widget is WLength::Auto.
Reimplemented from Wt::WWebWidget.
|
virtual |
Act on resize events.
Usually, this method only contains functions to set the viewport and the projection matrix (as this is aspect ration dependent).
resizeGL() is rendered after initializeGL, and whenever widget is resized. After this method finishes, the widget is repainted with the cached client-side paint function.
void WGLWidget::sampleCoverage | ( | double | value, |
bool | invert | ||
) |
GL function to set multisample parameters.
void WGLWidget::scissor | ( | int | x, |
int | y, | ||
unsigned | width, | ||
unsigned | height | ||
) |
GL function to define the scissor box.
void WGLWidget::setAlternativeContent | ( | WWidget * | alternative) |
Sets the content to be displayed when WebGL is not available.
If Wt cannot create a working WebGL context, this content will be shown to the user. This may be a text explanation, or a pre-rendered image, or a video, a flash movie, ...
The default is a widget that explains to the user that he has no WebGL support.
void WGLWidget::setClientSideLookAtHandler | ( | const JavaScriptMatrix4x4 & | m, |
double | lX, | ||
double | lY, | ||
double | lZ, | ||
double | uX, | ||
double | uY, | ||
double | uZ, | ||
double | pitchRate, | ||
double | yawRate | ||
) |
Add a mouse handler to the widget that looks at a given point.
This will allow a user to change client-side matrix m with the mouse. M is a model transformation matrix, representing the viewpoint of the camera.
Through mouse operations, the camera can be changed by the user, but (lX, lY, lZ) will always be at the center of the display, (uX, uY, uZ) is considered to be the up direction, and the distance of the camera to (lX, lY, lZ) will never change.
Pressing the left mouse button and moving the mouse left/right will rotate the camera around the up (uX, uY, uZ) direction. Moving up/down will tilt the camera (causing it to move up/down to keep the lookpoint centered). The scroll wheel simulates zooming by scaling the scene.
pitchRate and yawRate control how much the camera will move per mouse pixel.
Usually this method is called after setting a camera transformation with a client-side matrix in initializeGL(). However, this function may also be called from outside the intializeGL()/paintGL()/updateGL() methods (but not before m was initialized).
void WGLWidget::setClientSideWalkHandler | ( | const JavaScriptMatrix4x4 & | m, |
double | frontStep, | ||
double | rotStep | ||
) |
Add a mouse handler to the widget that allows 'walking' in the scene.
This will allow a user to change client-side matrix m with the mouse. M is a model transformation matrix, representing the viewpoint of the camera.
Through mouse operations, the camera can be changed by the user, as if he is walking around on a plane.
Pressing the left mouse button and moving the mouse left/right will rotate the camera around Y axis. Moving the mouse up/down will move the camera in the Z direction (walking forward/backward). centered).
frontStep and rotStep control how much the camera will move per mouse pixel.
Usually this method is called after setting a camera transformation with a client-side matrix in initializeGL(). However, this function may also be called from outside the intializeGL()/paintGL()/updateGL() methods (but not before m was initialized).
void WGLWidget::shaderSource | ( | Shader | shader, |
const std::string & | src | ||
) |
GL function to set a shader's source code.
void WGLWidget::stencilFunc | ( | GLenum | func, |
int | ref, | ||
unsigned | mask | ||
) |
GL function to set stencil test parameters.
GL function to set stencil test parameters for front and/or back stencils.
void WGLWidget::stencilMask | ( | unsigned | mask) |
GL function to control which bits are to be written in the stencil buffer.
void WGLWidget::stencilMaskSeparate | ( | GLenum | face, |
unsigned | mask | ||
) |
GL function to control which bits are written to the front and/or back stencil buffers.
GL function to set stencil test actions.
GL function to set front and/or back stencil test actions separately.
void WGLWidget::texImage2D | ( | GLenum | target, |
int | level, | ||
GLenum | internalformat, | ||
unsigned | width, | ||
unsigned | height, | ||
int | border, | ||
GLenum | format | ||
) |
GL function to reserve space for a 2D texture, without specifying its contents.
This corresponds to calling the WebGL function void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView pixels) with null as last parameters. The value of 'type' is then of no importance and is therefore omitted from this function.
void WGLWidget::texImage2D | ( | GLenum | target, |
int | level, | ||
GLenum | internalformat, | ||
GLenum | format, | ||
GLenum | type, | ||
WImage * | image | ||
) |
void WGLWidget::texImage2D | ( | GLenum | target, |
int | level, | ||
GLenum | internalformat, | ||
GLenum | format, | ||
GLenum | type, | ||
WVideo * | video | ||
) |
GL function to load a 2D texture from a WVideo.
Note: the video must be loaded prior to calling this function. The current frame is used as texture image.
void WGLWidget::texImage2D | ( | GLenum | target, |
int | level, | ||
GLenum | internalformat, | ||
GLenum | format, | ||
GLenum | type, | ||
Texture | texture | ||
) |
GL function to load a 2D texture loaded with createTextureAndLoad()
This function must only be used for textures created with createTextureAndLoad()
Note: the WGLWidget implementation will delay rendering until all textures created with createTextureAndLoad() are loaded in the browser.
GL function to set texture parameters.
void Wt::WGLWidget::uniform1f | ( | const UniformLocation & | location, |
double | x | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform1fv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform1i | ( | const UniformLocation & | location, |
int | x | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform1iv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform2f | ( | const UniformLocation & | location, |
double | x, | ||
double | y | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform2fv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform2i | ( | const UniformLocation & | location, |
int | x, | ||
int | y | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform2iv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform3f | ( | const UniformLocation & | location, |
double | x, | ||
double | y, | ||
double | z | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform3fv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform3i | ( | const UniformLocation & | location, |
int | x, | ||
int | y, | ||
int | z | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform3iv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform4f | ( | const UniformLocation & | location, |
double | x, | ||
double | y, | ||
double | z, | ||
double | w | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform4fv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform4i | ( | const UniformLocation & | location, |
int | x, | ||
int | y, | ||
int | z, | ||
int | w | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniform4iv | ( | const UniformLocation & | location, |
const Array * | value | ||
) |
GL function to set the value of a uniform variable of the current program.
void Wt::WGLWidget::uniformMatrix2 | ( | const UniformLocation & | location, |
const WGenericMatrix< T, 2, 2 > & | m | ||
) |
GL function to set the value of a uniform matrix of the current program.
This function renders the matrix in the proper row/column order.
void Wt::WGLWidget::uniformMatrix2fv | ( | const UniformLocation & | location, |
bool | transpose, | ||
const MatrixType * | value | ||
) |
GL function to set the value of a uniform matrix of the current program.
Attention: The OpenGL ES specification states that transpose MUST be false.
void Wt::WGLWidget::uniformMatrix3 | ( | const UniformLocation & | location, |
const WGenericMatrix< T, 3, 3 > & | m | ||
) |
GL function to set the value of a uniform matrix of the current program.
This function renders the matrix in the proper row/column order.
void Wt::WGLWidget::uniformMatrix3fv | ( | const UniformLocation & | location, |
bool | transpose, | ||
const MatrixType * | value | ||
) |
GL function to set the value of a uniform matrix of the current program.
Attention: The OpenGL ES specification states that transpose MUST be false.
void Wt::WGLWidget::uniformMatrix4 | ( | const UniformLocation & | location, |
const WGenericMatrix< T, 4, 4 > & | m | ||
) |
GL function to set the value of a uniform matrix of the current program.
This function renders the matrix in the proper row/column order.
void Wt::WGLWidget::uniformMatrix4 | ( | const UniformLocation & | location, |
const JavaScriptMatrix4x4 & | m | ||
) |
GL function to set the value of a uniform matrix of the current program.
void Wt::WGLWidget::uniformMatrix4fv | ( | const UniformLocation & | location, |
bool | transpose, | ||
const MatrixType * | value | ||
) |
GL function to set the value of a uniform matrix of the current program.
Attention: The OpenGL ES specification states that transpose MUST be false.
|
virtual |
Update state set in initializeGL()
Invoked when repaint is called with the UPDATE_GL call.
This is intended to be executed when you want to change programs, 'constant' uniforms, or even VBO's, ... without resending already initialized data. It is a mechanism to make changes to what you've set in intializeGL(). For every server-side invocation of this method, the result will be rendered client-side exactly once.
void WGLWidget::useProgram | ( | Program | program) |
GL function to set the current active shader program.
void WGLWidget::validateProgram | ( | Program | program) |
GL function to validate a program.
implementation note: there is currently not yet a method to read out the validation result.
void Wt::WGLWidget::vertexAttrib1f | ( | AttribLocation | location, |
double | x | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib1fv | ( | AttribLocation | location, |
const Array * | values | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib2f | ( | AttribLocation | location, |
double | x, | ||
double | y | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib2fv | ( | AttribLocation | location, |
const Array * | values | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib3f | ( | AttribLocation | location, |
double | x, | ||
double | y, | ||
double | z | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib3fv | ( | AttribLocation | location, |
const Array * | values | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib4f | ( | AttribLocation | location, |
double | x, | ||
double | y, | ||
double | z, | ||
double | w | ||
) |
GL function to set the value of an attribute of the current program.
void Wt::WGLWidget::vertexAttrib4fv | ( | AttribLocation | location, |
const Array * | values | ||
) |
GL function to set the value of an attribute of the current program.
void WGLWidget::vertexAttribPointer | ( | AttribLocation | location, |
int | size, | ||
GLenum | type, | ||
bool | normalized, | ||
unsigned | stride, | ||
unsigned | offset | ||
) |
GL function to bind a VBO to an attribute.
This function links the given attribute to the VBO currently bound to the ARRAY_BUFFER target.
The size parameter specifies the number of components per attribute (1 to 4). The type parameter is also used to determine the size of each component.
The size of a float is 8 bytes.
In WGLWidget, the size of an int is 4 bytes.
The stride is in bytes.
The maximum stride is 255.
void WGLWidget::viewport | ( | int | x, |
int | y, | ||
unsigned | width, | ||
unsigned | height | ||
) |
GL function to set the viewport.