CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-badlogicgames-gdx--gdx-backend-gwt

GWT backend for libGDX enabling Java game development for web browsers through JavaScript compilation

Pending
Overview
Eval results
Files

graphics.mddocs/

Graphics and Rendering

The GWT backend provides WebGL-based graphics rendering with full OpenGL ES 2.0 and 3.0 compatibility. The graphics system handles canvas management, WebGL context creation, and provides browser-optimized implementations of libGDX graphics interfaces.

Core Graphics Classes

GwtGraphics { .api }

public class GwtGraphics extends AbstractGraphics {
    // Display information
    public int getWidth();
    public int getHeight();
    public int getBackBufferWidth();
    public int getBackBufferHeight();
    public float getBackBufferScale();
    public int getSafeInsetLeft();
    public int getSafeInsetTop();
    public int getSafeInsetBottom();
    public int getSafeInsetRight();
    
    // Frame timing
    public float getDeltaTime();
    public float getRawDeltaTime();
    public int getFramesPerSecond();
    public GraphicsType getType(); // Returns GraphicsType.WebGL
    public float getPpiX();
    public float getPpiY();
    public float getPpcX();
    public float getPpcY();
    public float getDensity();
    
    // Display modes (limited in browsers)
    public boolean supportsDisplayModeChange();
    public DisplayMode[] getDisplayModes();
    public DisplayMode getDisplayMode();
    public boolean setFullscreenMode(DisplayMode displayMode);
    public boolean setWindowedMode(int width, int height);
    
    // V-Sync (no-op in browsers)
    public void setVSync(boolean vsync);
    public BufferFormat getBufferFormat();
    public boolean supportsExtension(String extension);
    
    // OpenGL context
    public GL20 getGL20();
    public GL30 getGL30();
    public void setGL20(GL20 gl20);
    public void setGL30(GL30 gl30);
    
    // Window management (web-specific)
    public void setTitle(String title);
    public void setUndecorated(boolean undecorated);
    public void setResizable(boolean resizable);
    public void setSystemCursor(Cursor.SystemCursor systemCursor);
    public void setCursor(Cursor cursor);
    
    // Monitor and display information
    public Monitor getPrimaryMonitor();
    public Monitor getMonitor();
    public Monitor[] getMonitors();
    public DisplayMode[] getDisplayModes(Monitor monitor);
    public DisplayMode getDisplayMode(Monitor monitor);
    
    // Screenshot capability
    public void requestRendering();
    public boolean isFullscreen();
    
    // Cursor creation
    public Cursor newCursor(Pixmap pixmap, int xHotspot, int yHotspot);
}

OpenGL Implementations

GwtGL20 { .api }

public class GwtGL20 implements GL20 {
    // All standard GL20 methods
    public void glActiveTexture(int texture);
    public void glAttachShader(int program, int shader);
    public void glBindAttribLocation(int program, int index, String name);
    public void glBindBuffer(int target, int buffer);
    public void glBindFramebuffer(int target, int framebuffer);
    public void glBindRenderbuffer(int target, int renderbuffer);
    public void glBindTexture(int target, int texture);
    public void glBlendColor(float red, float green, float blue, float alpha);
    public void glBlendEquation(int mode);
    public void glBlendEquationSeparate(int modeRGB, int modeAlpha);
    public void glBlendFunc(int sfactor, int dfactor);
    public void glBlendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha);
    public void glBufferData(int target, int size, Buffer data, int usage);
    public void glBufferSubData(int target, int offset, int size, Buffer data);
    public int glCheckFramebufferStatus(int target);
    public void glClear(int mask);
    public void glClearColor(float red, float green, float blue, float alpha);
    public void glClearDepthf(float depth);
    public void glClearStencil(int s);
    public void glColorMask(boolean red, boolean green, boolean blue, boolean alpha);
    public void glCompileShader(int shader);
    public void glCompressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, int imageSize, Buffer data);
    public void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int imageSize, Buffer data);
    public void glCopyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border);
    public void glCopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height);
    public int glCreateProgram();
    public int glCreateShader(int type);
    public void glCullFace(int mode);
    public void glDeleteBuffers(int n, IntBuffer buffers);
    public void glDeleteBuffer(int buffer);
    public void glDeleteFramebuffers(int n, IntBuffer framebuffers);
    public void glDeleteFramebuffer(int framebuffer);
    public void glDeleteProgram(int program);
    public void glDeleteRenderbuffers(int n, IntBuffer renderbuffers);
    public void glDeleteRenderbuffer(int renderbuffer);
    public void glDeleteShader(int shader);
    public void glDeleteTextures(int n, IntBuffer textures);
    public void glDeleteTexture(int texture);
    public void glDepthFunc(int func);
    public void glDepthMask(boolean flag);
    public void glDepthRangef(float zNear, float zFar);
    public void glDetachShader(int program, int shader);
    public void glDisable(int cap);
    public void glDisableVertexAttribArray(int index);
    public void glDrawArrays(int mode, int first, int count);
    public void glDrawElements(int mode, int count, int type, Buffer indices);
    public void glEnable(int cap);
    public void glEnableVertexAttribArray(int index);
    public void glFinish();
    public void glFlush();
    public void glFramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, int renderbuffer);
    public void glFramebufferTexture2D(int target, int attachment, int textarget, int texture, int level);
    public void glFrontFace(int mode);
    public void glGenBuffers(int n, IntBuffer buffers);
    public int glGenBuffer();
    public void glGenerateMipmap(int target);
    public void glGenFramebuffers(int n, IntBuffer framebuffers);
    public int glGenFramebuffer();
    public void glGenRenderbuffers(int n, IntBuffer renderbuffers);
    public int glGenRenderbuffer();
    public void glGenTextures(int n, IntBuffer textures);
    public int glGenTexture();
    public String glGetActiveAttrib(int program, int index, IntBuffer size, IntBuffer type);
    public String glGetActiveUniform(int program, int index, IntBuffer size, IntBuffer type);
    public void glGetAttachedShaders(int program, int maxcount, Buffer count, IntBuffer shaders);
    public int glGetAttribLocation(int program, String name);
    public void glGetBooleanv(int pname, Buffer params);
    public void glGetBufferParameteriv(int target, int pname, IntBuffer params);
    public int glGetError();
    public void glGetFloatv(int pname, FloatBuffer params);
    public void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, IntBuffer params);
    public void glGetIntegerv(int pname, IntBuffer params);
    public String glGetProgramInfoLog(int program);
    public void glGetProgramiv(int program, int pname, IntBuffer params);
    public void glGetRenderbufferParameteriv(int target, int pname, IntBuffer params);
    public String glGetShaderInfoLog(int shader);
    public void glGetShaderiv(int shader, int pname, IntBuffer params);
    public void glGetShaderPrecisionFormat(int shadertype, int precisiontype, IntBuffer range, IntBuffer precision);
    public void glGetShaderSource(int shader, int bufsize, Buffer length, String source);
    public String glGetString(int name);
    public void glGetTexParameterfv(int target, int pname, FloatBuffer params);
    public void glGetTexParameteriv(int target, int pname, IntBuffer params);
    public int glGetUniformLocation(int program, String name);
    public void glGetUniformfv(int program, int location, FloatBuffer params);
    public void glGetUniformiv(int program, int location, IntBuffer params);
    public void glGetVertexAttribfv(int index, int pname, FloatBuffer params);
    public void glGetVertexAttribiv(int index, int pname, IntBuffer params);
    public void glGetVertexAttribPointerv(int index, int pname, Buffer pointer);
    public void glHint(int target, int mode);
    public boolean glIsBuffer(int buffer);
    public boolean glIsEnabled(int cap);
    public boolean glIsFramebuffer(int framebuffer);
    public boolean glIsProgram(int program);
    public boolean glIsRenderbuffer(int renderbuffer);
    public boolean glIsShader(int shader);
    public boolean glIsTexture(int texture);
    public void glLineWidth(float width);
    public void glLinkProgram(int program);
    public void glPixelStorei(int pname, int param);
    public void glPolygonOffset(float factor, float units);
    public void glReadPixels(int x, int y, int width, int height, int format, int type, Buffer pixels);
    public void glReleaseShaderCompiler();
    public void glRenderbufferStorage(int target, int internalformat, int width, int height);
    public void glSampleCoverage(float value, boolean invert);
    public void glScissor(int x, int y, int width, int height);
    public void glShaderBinary(int n, IntBuffer shaders, int binaryformat, Buffer binary, int length);
    public void glShaderSource(int shader, String string);
    public void glStencilFunc(int func, int ref, int mask);
    public void glStencilFuncSeparate(int face, int func, int ref, int mask);
    public void glStencilMask(int mask);
    public void glStencilMaskSeparate(int face, int mask);
    public void glStencilOp(int fail, int zfail, int zpass);
    public void glStencilOpSeparate(int face, int fail, int zfail, int zpass);
    public void glTexImage2D(int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels);
    public void glTexParameterf(int target, int pname, float param);
    public void glTexParameterfv(int target, int pname, FloatBuffer params);
    public void glTexParameteri(int target, int pname, int param);
    public void glTexParameteriv(int target, int pname, IntBuffer params);
    public void glTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, Buffer pixels);
    public void glUniform1f(int location, float x);
    public void glUniform1fv(int location, int count, FloatBuffer v);
    public void glUniform1fv(int location, int count, float[] v, int offset);
    public void glUniform1i(int location, int x);
    public void glUniform1iv(int location, int count, IntBuffer v);
    public void glUniform1iv(int location, int count, int[] v, int offset);
    public void glUniform2f(int location, float x, float y);
    public void glUniform2fv(int location, int count, FloatBuffer v);
    public void glUniform2fv(int location, int count, float[] v, int offset);
    public void glUniform2i(int location, int x, int y);
    public void glUniform2iv(int location, int count, IntBuffer v);
    public void glUniform2iv(int location, int count, int[] v, int offset);
    public void glUniform3f(int location, float x, float y, float z);
    public void glUniform3fv(int location, int count, FloatBuffer v);
    public void glUniform3fv(int location, int count, float[] v, int offset);
    public void glUniform3i(int location, int x, int y, int z);
    public void glUniform3iv(int location, int count, IntBuffer v);
    public void glUniform3iv(int location, int count, int[] v, int offset);
    public void glUniform4f(int location, float x, float y, float z, float w);
    public void glUniform4fv(int location, int count, FloatBuffer v);
    public void glUniform4fv(int location, int count, float[] v, int offset);
    public void glUniform4i(int location, int x, int y, int z, int w);
    public void glUniform4iv(int location, int count, IntBuffer v);
    public void glUniform4iv(int location, int count, int[] v, int offset);
    public void glUniformMatrix2fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix2fv(int location, int count, boolean transpose, float[] value, int offset);
    public void glUniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix3fv(int location, int count, boolean transpose, float[] value, int offset);
    public void glUniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset);
    public void glUseProgram(int program);
    public void glValidateProgram(int program);
    public void glVertexAttrib1f(int indx, float x);
    public void glVertexAttrib1fv(int indx, FloatBuffer values);
    public void glVertexAttrib2f(int indx, float x, float y);
    public void glVertexAttrib2fv(int indx, FloatBuffer values);
    public void glVertexAttrib3f(int indx, float x, float y, float z);
    public void glVertexAttrib3fv(int indx, FloatBuffer values);
    public void glVertexAttrib4f(int indx, float x, float y, float z, float w);
    public void glVertexAttrib4fv(int indx, FloatBuffer values);
    public void glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, Buffer ptr);
    public void glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, int ptr);
    public void glViewport(int x, int y, int width, int height);
}

GwtGL30 { .api }

public class GwtGL30 extends GwtGL20 implements GL30 {
    // Additional GL30 methods
    public void glBeginQuery(int target, int id);
    public void glBeginTransformFeedback(int primitiveMode);
    public void glBindBufferBase(int target, int index, int buffer);
    public void glBindBufferRange(int target, int index, int buffer, int offset, int size);
    public void glBindSampler(int unit, int sampler);
    public void glBindTransformFeedback(int target, int id);
    public void glBindVertexArray(int array);
    public void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter);
    public void glClearBufferfi(int buffer, int drawbuffer, float depth, int stencil);
    public void glClearBufferfv(int buffer, int drawbuffer, FloatBuffer value);
    public void glClearBufferiv(int buffer, int drawbuffer, IntBuffer value);
    public void glClearBufferuiv(int buffer, int drawbuffer, IntBuffer value);
    public int glClientWaitSync(long sync, int flags, long timeout);
    public void glCompressedTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int imageSize, Buffer data);
    public void glCompressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int imageSize, Buffer data);
    public void glCopyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size);
    public void glCopyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height);
    public void glDeleteQueries(int n, int[] ids, int offset);
    public void glDeleteQueries(int n, IntBuffer ids);
    public void glDeleteQuery(int id);
    public void glDeleteSamplers(int count, int[] samplers, int offset);
    public void glDeleteSamplers(int count, IntBuffer samplers);
    public void glDeleteSampler(int sampler);
    public void glDeleteSync(long sync);
    public void glDeleteTransformFeedbacks(int n, int[] ids, int offset);
    public void glDeleteTransformFeedbacks(int n, IntBuffer ids);
    public void glDeleteTransformFeedback(int id);
    public void glDeleteVertexArrays(int n, int[] arrays, int offset);
    public void glDeleteVertexArrays(int n, IntBuffer arrays);
    public void glDeleteVertexArray(int array);
    public void glDrawArraysInstanced(int mode, int first, int count, int instanceCount);
    public void glDrawBuffers(int n, IntBuffer bufs);
    public void glDrawElementsInstanced(int mode, int count, int type, Buffer indices, int instanceCount);
    public void glDrawElementsInstanced(int mode, int count, int type, int indices, int instanceCount);
    public void glDrawRangeElements(int mode, int start, int end, int count, int type, Buffer indices);
    public void glDrawRangeElements(int mode, int start, int end, int count, int type, int offset);
    public void glEndQuery(int target);
    public void glEndTransformFeedback();
    public long glFenceSync(int condition, int flags);
    public void glFlushMappedBufferRange(int target, int offset, int length);
    public void glFramebufferTextureLayer(int target, int attachment, int texture, int level, int layer);
    public void glGenQueries(int n, int[] ids, int offset);
    public void glGenQueries(int n, IntBuffer ids);
    public int glGenQuery();
    public void glGenSamplers(int count, int[] samplers, int offset);
    public void glGenSamplers(int count, IntBuffer samplers);
    public int glGenSampler();
    public void glGenTransformFeedbacks(int n, int[] ids, int offset);
    public void glGenTransformFeedbacks(int n, IntBuffer ids);
    public int glGenTransformFeedback();
    public void glGenVertexArrays(int n, int[] arrays, int offset);
    public void glGenVertexArrays(int n, IntBuffer arrays);
    public int glGenVertexArray();
    public String glGetActiveUniformBlockName(int program, int uniformBlockIndex);
    public void glGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, IntBuffer params);
    public void glGetActiveUniformsiv(int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params);
    public int glGetBufferParameteri(int target, int pname);
    public int glGetFragDataLocation(int program, String name);
    public void glGetInteger64v(int pname, LongBuffer params);
    public void glGetIntegeri_v(int target, int index, IntBuffer data);
    public void glGetInternalformativ(int target, int internalformat, int pname, int bufSize, IntBuffer params);
    public void glGetQueryiv(int target, int pname, IntBuffer params);
    public void glGetQueryObjectuiv(int id, int pname, IntBuffer params);
    public void glGetSamplerParameterfv(int sampler, int pname, FloatBuffer params);
    public void glGetSamplerParameteriv(int sampler, int pname, IntBuffer params);
    public String glGetStringi(int name, int index);
    public void glGetSynciv(long sync, int pname, int bufSize, IntBuffer length, IntBuffer values);
    public void glGetTransformFeedbackVarying(int program, int index, int bufSize, IntBuffer length, IntBuffer size, IntBuffer type, byte[] name);
    public int glGetUniformBlockIndex(int program, String uniformBlockName);
    public void glGetUniformIndices(int program, String[] uniformNames, IntBuffer uniformIndices);
    public void glGetUniformuiv(int program, int location, IntBuffer params);
    public void glGetVertexAttribIiv(int index, int pname, IntBuffer params);
    public void glGetVertexAttribIuiv(int index, int pname, IntBuffer params);
    public void glInvalidateFramebuffer(int target, int numAttachments, IntBuffer attachments);
    public void glInvalidateSubFramebuffer(int target, int numAttachments, IntBuffer attachments, int x, int y, int width, int height);
    public boolean glIsQuery(int id);
    public boolean glIsSampler(int sampler);
    public boolean glIsSync(long sync);
    public boolean glIsTransformFeedback(int id);
    public boolean glIsVertexArray(int array);
    public ByteBuffer glMapBufferRange(int target, int offset, int length, int access);
    public void glPauseTransformFeedback();
    public void glReadBuffer(int mode);
    public void glRenderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height);
    public void glResumeTransformFeedback();
    public void glSamplerParameterf(int sampler, int pname, float param);
    public void glSamplerParameterfv(int sampler, int pname, FloatBuffer param);
    public void glSamplerParameteri(int sampler, int pname, int param);
    public void glSamplerParameteriv(int sampler, int pname, IntBuffer param);
    public void glTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, Buffer pixels);
    public void glTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, int offset);
    public void glTexStorage2D(int target, int levels, int internalformat, int width, int height);
    public void glTexStorage3D(int target, int levels, int internalformat, int width, int height, int depth);
    public void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, Buffer pixels);
    public void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, int offset);
    public void glTransformFeedbackVaryings(int program, String[] varyings, int bufferMode);
    public void glUniform1uiv(int location, int count, IntBuffer value);
    public void glUniform2uiv(int location, int count, IntBuffer value);
    public void glUniform3uiv(int location, int count, IntBuffer value);
    public void glUniform4uiv(int location, int count, IntBuffer value);
    public void glUniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding);
    public void glUniformMatrix2x3fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix2x4fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix3x2fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix3x4fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix4x2fv(int location, int count, boolean transpose, FloatBuffer value);
    public void glUniformMatrix4x3fv(int location, int count, boolean transpose, FloatBuffer value);
    public boolean glUnmapBuffer(int target);
    public void glVertexAttribDivisor(int index, int divisor);
    public void glVertexAttribI4i(int index, int x, int y, int z, int w);
    public void glVertexAttribI4iv(int index, IntBuffer v);
    public void glVertexAttribI4ui(int index, int x, int y, int z, int w);
    public void glVertexAttribI4uiv(int index, IntBuffer v);
    public void glVertexAttribIPointer(int index, int size, int type, int stride, Buffer pointer);
    public void glVertexAttribIPointer(int index, int size, int type, int stride, int offset);
    public void glWaitSync(long sync, int flags, long timeout);
}

Debug Implementations

GwtGL20Debug { .api }

public class GwtGL20Debug extends GwtGL20 {
    // Wrapped GL20 implementation with error checking
    // All GL20 methods with automatic glGetError() calls
}

GwtGL30Debug { .api }

public class GwtGL30Debug extends GwtGL30 {
    // Wrapped GL30 implementation with error checking  
    // All GL30 methods with automatic glGetError() calls
}

Cursor Support

GwtCursor { .api }

public class GwtCursor implements Cursor {
    // Browser cursor implementation
}

Usage Examples

Basic Graphics Setup

// In your ApplicationListener
public void create() {
    // Get graphics instance
    Graphics graphics = Gdx.graphics;
    
    // Check WebGL support and version
    if (graphics.getType() == GraphicsType.WebGL) {
        GL20 gl = graphics.getGL20();
        // Use GL20 for rendering
        
        if (graphics.getGL30() != null) {
            GL30 gl30 = graphics.getGL30();
            // Use GL30 features if available
        }
    }
}

Debug OpenGL Context

public class MyGameGwt extends GwtApplication {
    @Override
    public GwtApplicationConfiguration getConfig() {
        GwtApplicationConfiguration config = new GwtApplicationConfiguration(800, 600);
        // Enable debug mode during development
        return config;
    }

    @Override
    public ApplicationListener createApplicationListener() {
        return new ApplicationListener() {
            @Override
            public void create() {
                // Enable GL debug mode
                Graphics graphics = Gdx.graphics;
                if (graphics.getGL30() != null) {
                    graphics.setGL30(new GwtGL30Debug(graphics.getGL30()));
                } else {
                    graphics.setGL20(new GwtGL20Debug(graphics.getGL20()));
                }
            }
            // ... other methods
        };
    }
}

Install with Tessl CLI

npx tessl i tessl/maven-com-badlogicgames-gdx--gdx-backend-gwt

docs

application.md

audio.md

files.md

graphics.md

index.md

input.md

networking.md

preloader.md

webaudio.md

widgets.md

tile.json