Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[rlgl] glVertexAttribPointer() error client-side with WebGL 2.0 (OpenGL ES 3.0) #4330

Closed
tomlikesnakes opened this issue Sep 19, 2024 · 6 comments
Labels
help needed - please! I need help with this issue platform: Web Web platform

Comments

@tomlikesnakes
Copy link

tomlikesnakes commented Sep 19, 2024

Hello,

There is an error when targetting webgl2 and using whatever Draw function you want (like DrawRectangle/cube/text etc)

index.js:7373 Uncaught TypeError: Cannot set properties of undefined (setting 'clientside')
    at _glVertexAttribPointer

I did a very minimal example here :

#include <raylib.h>
#include <emscripten.h>

const int screenWidth = 800;
const int screenHeight = 450;

void draw(void) {
    BeginDrawing();

    ClearBackground(RAYWHITE);

    DrawRectangle(200, 150, 400, 200, RED);

    DrawText("Hello, WebAssembly with Raylib!", 210, 200, 20, BLACK);

    EndDrawing();
}

int main() {
    InitWindow(screenWidth, screenHeight, "raylib with Emscripten - Simple Draw");

    SetTargetFPS(60);

    emscripten_set_main_loop(draw, 0, 1);

    CloseWindow();

    return 0;
}


compilation flag :

emcc -o index.html testthatfail.c -I/home/tom/raylib-wasm/src     
-L/home/tom/raylib-wasm/src -lraylib -DPLATFORM_WEB     -s USE_GLFW=3 -s FULL_ES3=1 -s MIN_WEBGL_
VERSION=2 -s MAX_WEBGL_VERSION=2 -s ASYNCIFY

I tried with only full_es2, with different things for memory and so.

For this kind of things it is not really problematic but for my other project I need to create vertex buffer and go with opengl (not rlgl) and use shaders for a cube, and i need the webgl2/opengl300es for my futures things on the project

@tomlikesnakes tomlikesnakes changed the title glVertexAttribPointer error client-side with opengl es300 on weblgl2 glVertexAttribPointer error client-side with opengl es300 on webgl2 Sep 19, 2024
@tomlikesnakes
Copy link
Author

Okay it's due to the flag FULL_ES from emscripten

@tomlikesnakes
Copy link
Author

We got these warning when removed the -s FULL_ES2=1 (or FULL_ES3=1) that transform themselves to errors

128WebGL: INVALID_VALUE: vertexAttribPointer: index out of range
128WebGL: INVALID_VALUE: enableVertexAttribArray: index out of range
index.js:5086 WebGL: too many errors, no more errors will be reported to the console for this context.

@tomlikesnakes
Copy link
Author

this works :

#include <raylib.h>
#include <emscripten.h>
#include <GLES3/gl3.h> 

const int screen_width = 800;
const int screen_height = 450;

GLuint shader_program;
GLint pos_attrib;
GLuint vbo, vao;

// Vertex data for a simple triangle
float vertices[] = {
    -0.5f, -0.5f, 0.0f, 
     0.5f, -0.5f, 0.0f, 
     0.0f,  0.5f, 0.0f
};

void draw(void) {
    BeginDrawing();

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glUseProgram(shader_program);
    TraceLog(LOG_INFO, "Using shader program %d", shader_program);

    glBindVertexArray(vao);
    TraceLog(LOG_INFO, "Bound VAO %d", vao);

    glDrawArrays(GL_TRIANGLES, 0, 3);
    TraceLog(LOG_INFO, "DrawArrays executed");

    EndDrawing();
}

void setup_shaders() {
    // Vertex shader that uses the 'position' attribute
    const char* vertex_shader_source = "#version 300 es\n"
        "precision mediump float;\n"
        "layout(location = 0) in vec3 position;\n"
        "void main() {\n"
        "    // Use each component of position and assign it to gl_Position\n"
        "    gl_Position = vec4(position.x, position.y, position.z, 1.0);\n"
        "}\n";

    // Fragment shader that uses frag_color
    const char* fragment_shader_source = "#version 300 es\n"
        "precision mediump float;\n"
        "out vec4 frag_color;\n"
        "void main() {\n"
        "    // Output a constant red color\n"
        "    frag_color = vec4(1.0, 0.0, 0.0, 1.0);\n"
        "}\n";

    GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);
    glCompileShader(vertex_shader);

    GLint vertex_compile_status;
    glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &vertex_compile_status);
    if (!vertex_compile_status) {
        char info_log[512];
        glGetShaderInfoLog(vertex_shader, 512, NULL, info_log);
        TraceLog(LOG_ERROR, "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s", info_log);
    }

    GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);
    glCompileShader(fragment_shader);

    GLint fragment_compile_status;
    glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &fragment_compile_status);
    if (!fragment_compile_status) {
        char info_log[512];
        glGetShaderInfoLog(fragment_shader, 512, NULL, info_log);
        TraceLog(LOG_ERROR, "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s", info_log);
    }

    // Create shader program and link shaders
    shader_program = glCreateProgram();
    glAttachShader(shader_program, vertex_shader);
    glAttachShader(shader_program, fragment_shader);
    glLinkProgram(shader_program);

    // Validate shader program
    GLint is_linked;
    glGetProgramiv(shader_program, GL_LINK_STATUS, &is_linked);
    if (!is_linked) {
        char info_log[512];
        glGetProgramInfoLog(shader_program, 512, NULL, info_log);
        TraceLog(LOG_ERROR, "ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s", info_log);
    }

    // Use the shader program
    glUseProgram(shader_program);

    // Get attribute location
    pos_attrib = glGetAttribLocation(shader_program, "position");
    TraceLog(LOG_INFO, "Attribute 'position' location (queried in setup): %d", pos_attrib);

    // Create VAO and VBO for triangle
    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);

    glGenBuffers(1, &vbo);
    glBindBuffer(GL_ARRAY_BUFFER, vbo);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    // Enable the attribute array and set up pointer
    if (pos_attrib >= 0) {
        glEnableVertexAttribArray(pos_attrib);
        glVertexAttribPointer(pos_attrib, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
        TraceLog(LOG_INFO, "VertexAttribPointer set for location %d", pos_attrib);
    } else {
        TraceLog(LOG_ERROR, "Invalid attribute location for 'position'");
    }

    // Unbind VAO (optional)
    glBindVertexArray(0);
}

int main() {
    InitWindow(screen_width, screen_height, "raylib with Emscripten - Proper Shaders");

    // Setup the shaders and VBO/VAO
    setup_shaders();

    SetTargetFPS(60);

    // Emscripten loop
    emscripten_set_main_loop(draw, 0, 1);

    CloseWindow();

    return 0;
}

this not (cause of previous warning from enableVertexAtribArray and so) :

#include <raylib.h>
#include <emscripten.h>
#include <rlgl.h>
#include <GLES3/gl3.h>  

const int screen_width = 800;
const int screen_height = 450;

Shader custom_shader;
unsigned int vbo, vao;
int position_loc;

void draw(void) {
    BeginDrawing();
    
    ClearBackground(RAYWHITE);

    rlEnableShader(custom_shader.id);

    // Bind the VAO (which contains the VBO with our vertex data)
    glBindVertexArray(vao);  // Use OpenGL to bind the VAO

    // Draw the triangle using the bound VAO
    glDrawArrays(GL_TRIANGLES, 0, 3);  // Draw 3 vertices (1 triangle)

    // Unbind the VAO after drawing
    glBindVertexArray(0);  // Unbind VAO to avoid issues later

    // End custom shader mode
    rlDisableShader();

    // Render some debug text
    DrawText("Triangle rendered using OpenGL and rlgl!", 210, 400, 20, BLACK);

    EndDrawing();
}

void setup_gl_buffers() {
    // Define the vertex data for a simple triangle (position only)
    float vertices[] = {
        // Positions
        -0.5f, -0.5f, 0.0f,   // Bottom-left
         0.5f, -0.5f, 0.0f,   // Bottom-right
         0.0f,  0.5f, 0.0f    // Top-center
    };

    // Generate and bind a VAO
    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);

    // Generate and bind a VBO
    glGenBuffers(1, &vbo);
    glBindBuffer(GL_ARRAY_BUFFER, vbo);

    // Upload the vertex data to the VBO
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    // Use the location retrieved from `rlgl` instead of hardcoding 0
    glEnableVertexAttribArray(position_loc);  // Use attribute location from `rlgl`
    glVertexAttribPointer(position_loc, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);

    // Unbind the VBO and VAO to avoid accidental modification
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    glBindVertexArray(0);
}

void setup_rlgl_shader() {
    // Vertex shader with a 'position' attribute
    const char* vertex_shader_code = "#version 300 es\n"
        "precision mediump float;\n"
        "layout(location = 0) in vec3 position;\n"  // 'position' attribute
        "void main() {\n"
        "    gl_Position = vec4(position.x, position.y, position.z, 1.0);\n"  // Use each component of position
        "}\n";

    // Fragment shader outputting a red color
    const char* fragment_shader_code = "#version 300 es\n"
        "precision mediump float;\n"
        "out vec4 frag_color;\n"
        "void main() {\n"
        "    frag_color = vec4(1.0, 0.0, 0.0, 1.0);\n"  // Output red color
        "}\n";

    // Load custom shader from code
    custom_shader = LoadShaderFromMemory(vertex_shader_code, fragment_shader_code);

    // Check for any shader compilation/linking errors
    if (custom_shader.id == 0) {
        TraceLog(LOG_ERROR, "Shader program failed to load.");
        return;
    }

    // Get the location of the 'position' attribute from the custom shader
    position_loc = GetShaderLocationAttrib(custom_shader, "position");
    TraceLog(LOG_INFO, "Shader position attribute location: %d", position_loc);

    if (position_loc == -1) {
        TraceLog(LOG_ERROR, "Failed to get position attribute location");
        return;
    }
}

int main() {
    InitWindow(screen_width, screen_height, "raylib with Emscripten - OpenGL + rlgl");

    // Setup the OpenGL buffers (VBO/VAO)
    setup_gl_buffers();

    // Setup the custom shader
    setup_rlgl_shader();

    SetTargetFPS(60);

    // Emscripten loop
    emscripten_set_main_loop(draw, 0, 1);

    // Cleanup
    UnloadShader(custom_shader);  // Unload the shader when done
    glDeleteBuffers(1, &vbo);     // Delete the VBO
    glDeleteVertexArrays(1, &vao); // Delete the VAO
    CloseWindow();                // Close the window and OpenGL context

    return 0;
}

-> the way rlgl manage shaders is not consistent that's why for the second example I also tried to use opengl with rlgl (also tried only rlgl but got same warnings)
-> From what I see for opengl 300es webgl2 you always need shaders and you always need to really have all in/out var clearly pass and defined (like each components of pos) and manually create vao/vbo with vertex data

for now I'm going to use pure opengl cause I really need the opengl 300es, If someone can have a look and correct what I found or anything I'm here

@raysan5 raysan5 changed the title glVertexAttribPointer error client-side with opengl es300 on webgl2 [rlgl] glVertexAttribPointer() error client-side with WebGL 2.0 (OpenGL ES 3.0) Sep 20, 2024
@raysan5 raysan5 added the platform: Web Web platform label Sep 20, 2024
@raysan5
Copy link
Owner

raysan5 commented Sep 20, 2024

@tomlikesnakes Thanks for reporting! Actually, OpenGL ES 3.0 has been added recently as a backend GL option to raylib and it has not been widely tested.

@raysan5 raysan5 added the help needed - please! I need help with this issue label Oct 24, 2024
@raysan5
Copy link
Owner

raysan5 commented Oct 25, 2024

Investigated a bit this issue... It seems the exact location of the issue is in rlDrawRenderBatch() function, in glVertexAttribPointer()/glEnableVertexAttribArray() calls.

The issue seems related to first parameter of both functions, the shader attribute location... but it's weird because it should be a valid value, like in OpenGL ES 2.0. glEnableVertexAttribArray() --> ES2.0 vs ES3.0.

No idea...

@raysan5
Copy link
Owner

raysan5 commented Oct 25, 2024

After testing, I couldn't reproduce the issue.
I compiled raylib with PLATFORM_WEB and GRAPHICS_API_OPENGL_ES_30
And then I compiled one example with the following line (in this case, using ASYNCIFY):

emcc -o core/core_basic_window.html core/core_basic_window.c -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces -Wunused-result -Os -I. -I../src -I../src/external -L. -L../src -L../src -sUSE_GLFW=3 -sASYNCIFY -sEXPORTED_RUNTIME_METHODS=ccall -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 --shell-file ../src/shell.html ../src/libraylib.a -DPLATFORM_WEB

I'm closing this issue.

@raysan5 raysan5 closed this as completed Oct 25, 2024
psxdev pushed a commit to raylib4Consoles/raylib that referenced this issue Nov 18, 2024
Qoen1 added a commit to Qoen1/raylib-cpp-group-h that referenced this issue Dec 26, 2024
* ADDED: `isGpuReady` flag, allow font loading with no GPU acceleration

* [RCORE] Update comments on fullscreen and boderless window to describe what they do (raysan5#4280)

* Update raylib_api.* by CI

* update fullscreen and borderless comments to better describe what they do.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* [rcore][desktop_glfw] Keeping CORE.Window.position properly in sync with glfw window position (raysan5#4190)

* WindowPosCallback added.

CORE.Window.position is now properly kept in sync with the glfw window position.

* Update rcore_desktop_glfw.c

Comments updated.

* Setting CORE.Window.position correctly in InitPlatform() as well.

This also fixes not centering the window correctly when the high dpi flag was enabled.

* Fixes centering the window in the SetWindowMonitor() function.

Here the render size has to be used again in case the high dpi flag is enabled.

* Update Window Position

Update Window Position right away in ToggleFullscreen() & ToggleBorderlessWindowed() functions

* rlgl.h: glint64 did not exist before OpenGL 3.2 (raysan5#4284)

Compilation breaks on rlgl.h for early OpenGL versions.
Glint64 did not exist on those versions (< OpenGL 3.2)

* Examples makefiles: align /usr/local with /src Makefile (raysan5#4286)

* align /usr/local with src Makefile

Align /usr/local with the /src Makefile, where it can be overriden.

* /usr/local: allow override

align /usr/local with the /src Makefile, where it can be overriden

* Update raylib.h

* ADDED: more uniform data type options raysan5#4137

* Update rlgl.h

* Update rtext.c

* [rModels] Correctly split obj meshes by material (raysan5#4285)

* Correctly split meshes from tinyobj by material so they can be represented by raylib correctly

* PR Feedback

* fix(rcore/android): Allow main() to return it its caller on configuration changes. (raysan5#4288)

* Fix missing equal sign (raysan5#4294)

I just noticed there is a missing equal sign. This PR fixes this.

* Add uConsole mapping (raysan5#4297)

* fix: In certain cases the connector status is reported UNKNOWN, should be conisdered as CONNECTED (raysan5#4305)

Co-authored-by: Michal Jaskolski <[email protected]>

* Fix seg fault with long comment lines (raysan5#4306)

raysan5#4304

* Change implicit conversion to explicit conversion to remove warning (raysan5#4308)

* fix vld1q_f16 undeclared in arm on stb_image_resize2.h v2.10 (raysan5#4309)

* Update BINDINGS.md (raysan5#4311)

I've updated the bindings

* fix for hardcoded index values in vboID array (raysan5#4312)

changing any of the #defines in CONFIG.H would cause issues when rendering.

* chore: GetApplicationDirectory definition for FreeBSD (raysan5#4318)

* [rtextures] add MixColors. a function to mix 2 colors together (raysan5#4310)

* added MixColors function to mix 2 colors together (Line 1428 raylib.h and Line 4995 in rtextures.c)

* renamed MixColors to ColorLerp (raysan5#4310 (comment))

* changed ColorLerp to be more like other functions

---------

Co-authored-by: CI <[email protected]>

* Update raylib_api.* by CI

* REVIEWED: `ColorLerp()` formatting raysan5#4310

* Update raylib_api.* by CI

* Update rtextures.c

* [rcore] Add filtering folders to `LoadDirectoryFilesEx()`/`ScanDirectoryFiles()` (raysan5#4302)

* Add filtering folders in ScanDirectoryFiles and ScanDirectoryFilesRecursively

Add define FILTER_FOLDER for that purpose
Fix folder names matching filter being added to result

* Move FILTER_FOLDER define to internals of rcore and document option in comment

* Update raylib_api.* by CI

* REVIEWED: `DrawTexturePro()` to avoid negative dest rec raysan5#4316

* REVIEWED: Directory filter tag raysan5#4323

* Reviewed raysan5#4323

* Update raylib.h

* Update raylib_api.* by CI

* [BINDINGS.md] Added raylib-bqn, moved rayed-bqn (raysan5#4331)

* [BINDINGS.md] Added raylib-bqn, moved rayed-bqn

rayed-bqn has had a lot of progress and I've realized it has diverged too much from raylib, and so I made raylib-bqn to be a simple binding, while rayed-bqn will be a utility wrapper.

* removed accidental newline

* [rmodels] Optional GPU skinning (raysan5#4321)

* Added optional GPU skinning

* Added skinned bone matrices support for different file formats.

* Moved new shader locations to end of enum to avoid breaking existing examples. Added gpu skinning on drawing of instanced meshes.

* Added GPU skinning example.

* Removed variable declaration to avoid shadowing warning.

* Update raylib_api.* by CI

* Some minor tweaks

* Fix rlgl standalone defaults (raysan5#4334)

* Projects: Fix CMake example project  (raysan5#4332)

* Update CMakeLists.txt

Add missing link flags

* Update README.md

Remove unneeded flag because this flag is defined in the updated CMakeList file

* Update CMakeLists.txt

* Update parser's readme to mirror fixed help text (raysan5#4336)

* Update BINDINGS.md (raysan5#4337)

Updated Lean4 bindings

* `LoadFontDefault()`: Initialize glyphs and recs to zero raysan5#4319

* ADDED: `MakeDirectory()`

* Update raylib_api.* by CI

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Fix isGpuReady flag on android (raysan5#4340)

* [SHAPES] Add more detail to comment for DrawPixel (raysan5#4344)

* Update raylib_api.* by CI

* Add comment that draw pixel uses geometry and may be slow

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix raysan5#4349

* [MODELS] Disable GPU skinning for MacOS platform (raysan5#4348)

* Update raylib_api.* by CI

* Disable GPU skinning on MacOS
Add GPU skinning example to MSVC Projects.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Complements the raysan5#4348 GPU skinning fix (raysan5#4352)

* Fixes GetClipboardText() memory leak for PLATFORM_DESKTOP_SDL (raysan5#4354)

* [MODELS] Better fix for GPU skinning issues (raysan5#4353)

* Make the max VBO match the animation flag.

* re-enable GPU skinning for mac, and fix the max buffer to be correct based on the GPU skinning support flag.

* [rlgl] Fix rlgl standalone defaults (raysan5#4357)

* Fix rlgl standalone defaults

* Fix rmodels

* Typo fix (raysan5#4356)

Seemed to be a typo. Hope this helps.

* Allow Zig build script to change desktop backend (raysan5#4358)

* [build] CMake: Fix GRAPHICS check (raysan5#4359)

* updated camera speeds with GetFrameTime (raysan5#4362)

* taken from FluxFlus PR (raysan5#4363)

* Fix raysan5#4355

* [example] Input virtual controls example (raysan5#4342)

* Add files via upload

* Update core_input_gamepad_virtual.c

* Add files via upload

* Update and rename core_input_gamepad_virtual.c to core_virtual_Dpad.c

* Update and rename core_virtual_Dpad.c to core_input_virtual_controls.c

* Delete examples/core/core_input_gamepad_virtual.png

* Add files via upload

* Update Makefile

* Update Makefile.Web

* Update README.md

* Update README.md

* Create core_input_virtual_controls.vcxproj

* Delete projects/VS2022/examples/core_input_virtual_controls.vcxproj

* [zig] Fix build.zig bug (raysan5#4366)

* fixed zig config.h bug

* zig fmt

* removed old comment (raysan5#4370)

* Update CHANGELOG

* updated makefile to disable wayland by default (raysan5#4369)

* Update RGFW  (raysan5#4372)

* (rcore_desktop_rgfw.c) fix errors when compiling with mingw

* define WideCharToMultiByte

* update RGFW

* move stdcall def to windows only

* fix raw cursor input

* Removed tabs and triple line-breaks

* Some update to gltf loading (raysan5#4373)

Only warns when there are more animations than currently implemented
Allows mesh indices to be unsigned char

* Fix build.zig (raysan5#4374)

* build.zig: Improve logic (raysan5#4375)

* build.zig: Fix `@src` logic

* build.zig: Clarify build error

* build.zig: Add option for enabling `raygui`

* build.zig: Expose `Options` type

* `WARNING`: REMOVED: SVG files loading and drawing, moving it to raylib-extras

* REMOVED: `LoadImageSvg()`

* Update raylib_api.* by CI

* Update BINDINGS.md (raysan5#4378)

* build.zig: Fix `@src` logic and a few things (raysan5#4380)

* REVIEWED: `CodepointToUTF8()`, clean static buffer raysan5#4379

* build.zig: Very minor fixes (raysan5#4381)

* Fix the type mismatch caused due to unsupported `?[]const u8` (raysan5#4383)

Co-authored-by: Yuval Herman <[email protected]>

* qoi: Added support for image of channels 3 (raysan5#4384)

* Fix rectangle width and height check to account for squares (raysan5#4382)

* ADDED: Utility functions: `ComputeCRC32()` and `ComputeMD5()`

* Update raylib_api.* by CI

* WARNING: BREAKING: Renamed several functions for data validation raysan5#3930

* Update raylib_api.* by CI

* Fix raysan5#4388 (raysan5#4392)

* Fix VSCode Makefile to support multiple .c files (raysan5#4391)

Updated the VSCode Makefile to allow compilation of multiple .c files instead of just one (main.c).
- Replaced `SRC` and `OBJS` definitions to dynamically include all .c and .h files in the project.
- This change enables automatic handling of any number of source files specifically in the VSCode setup.

* [rcore] added sha1 implementation (raysan5#4390)

* added sha1 implementation

* added missing part

* fixed issue

* fix to match other implementations

* Update raylib_api.* by CI

* build.zig: Clean up my mess (raysan5#4387)

* [rl_gputex] Correctly load mipmaps from DDS files (raysan5#4399)

* correction of comments (raysan5#4400)

The indication of locations for bone ids and bone weights did not correspond to their default values ​​in config.h

* build.zig: Fix various issues around `-Dconfig` (raysan5#4398)

* build.zig: Fix various issues around `-Dconfig`

* build.zig: Parse all relevant flags from `src/config.h` at comptime

* Adds MaximizeWindow() and RestoreWindow() implementation for PLATFORM_WEB (raysan5#4397)

* [rtextures] ImageDraw(): Don't try to blend images without alpha (raysan5#4395)

* removed extra update command (raysan5#4401)

* [rcore] [web] Updates `SetWindowState()` and `ClearWindowState()` to handle `FLAG_WINDOW_MAXIMIZED` for `PLATFORM_WEB` (raysan5#4402)

* Updates SetWindowState() and ClearWindowState() to handle FLAG_WINDOW_MAXIMIZED for PLATFORM_WEB

* Update MaximizeWindow() and RestoreWindow() to set/unset the FLAG_WINDOW_MAXIMIZED

* Fix MaximizeWindow() for PLATFORM_WEB (raysan5#4404)

* Adds SetWindowOpacity() implementation for PLATFORM_WEB (raysan5#4403)

* build.zig: Merge `src/build.zig` to `build.zig` (raysan5#4393)

* build.zig: Move `src/build.zig` to `build.zig`

* build.zig: Remove uses of `@src`

* build.zig: Update entry point

* [Raymath] Add C++ operator overloads for common math function (raysan5#4385)

* Update raylib_api.* by CI

* Add math operators for C++ to raymath

* better #define for disabling C++ operators

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* REVIEWED: Formatting and raymath version raysan5#4385

* Updated instanced rendering support loading (raysan5#4408)

* Reviewed formatting raysan5#4408

* Removed trailing spaces

* Update raymath.h

* [Raymath] Add matrix operators to raymath for C++ (raysan5#4409)

* Add matrix operators to raymath for C++

* Fix spaces

* REVIEWED: `GetGestureHoldDuration()` comments

* Update raylib_api.* by CI

* [rcore] Adds implementation to `SetGamepadVibration()` on `PLATFORM_WEB` and updates it on `PLATFORM_DESKTOP_SDL` to handle duration (raysan5#4410)

* Updates SetGamepadVibration()

* Handle MAX_GAMEPAD_VIBRATION_TIME

* Revert low/high parameters back to left/rightMotor

* Fix missin semicolon

* Convert duration to seconds

* Add SetGamepadVibration() implementation to PLATFORM_WEB

* Update raylib_api.* by CI

* moved update out of draw area (raysan5#4413)

* REVIEWED: skinning shader for GLSL 100 raysan5#4412

* build.zig: Better specify Linux dependencies (raysan5#4406)

* Simplify EmscriptenResizeCallback() (raysan5#4415)

* build.zig: Re-add OpenGL to Linux deps (raysan5#4417)

* build.zig: Fix a minor issue with `-Dconfig` (raysan5#4418)

* Reviewed skinning shaders raysan5#4412

* Update config.h

* Update raylib.h

* Update raylib_api.* by CI

* Update core_input_gamepad example (raysan5#4416)

* [rcore] Fix raysan5#4405 (raysan5#4420)

* Fix raysan5#4405 at runtime

* Add parameter validation

* Remove default global deadzone

* [examples] Add deadzone handling to `core_input_gamepad` example (raysan5#4422)

* Add deadzone handling to core_input_gamepad example

* Rename variables

* Grammar fix in CONTRIBUTING.md (raysan5#4423)

"Can you write some tutorial/example?"
"Can you write some tutorials/examples?"

* Fix typo in rshapes.c (raysan5#4421)

* Add drawing for generic gamepad on core_input_gamepad example (raysan5#4424)

* Update skinning.fs

* Reviewed and reverted unneeded module check, `rtextures` should not depend on `rtext`

* ADDED: CHANGELOG for raylib 5.5 -WIP-

* Update CHANGELOG

* Update Makefile

* Update Makefile

* [RTEXTURES] Remove the panorama cubemap layout option (raysan5#4425)

* Remove the panorama cubemap layout, it was not implemented.
Left a todo in the code for some aspiring developer to finish.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update HISTORY.md

* Update CHANGELOG

* Update raylib.h

* Update raylib_api.* by CI

* Update CHANGELOG

* Update raylib.h

* Update Makefile

* Update raylib_api.* by CI

* Update raylib.h

* Update raylib_api.* by CI

* REVIEWED: GPU skninning on Web, some gotchas! raysan5#4412

* Update rlgl.h

* REVIEWED: `UpdateModelAnimationBoneMatrices()` comments

* Update raylib_api.* by CI

* Update emsdk paths to latest versions

* [rshapes] Review `DrawRectangleLines()` pixel offset (raysan5#4261)

* [rshapes] Remove `DrawRectangleLines()`'s + 1 offset

* ... and replace it with a -/+ 0.5 offset divided by current cam's zoom.

* REVIEWED: `DrawRectangleLines()`, considering view matrix for lines "alignment"

* Use free camera in model shader example (raysan5#4428)

* Add shadow map example to MSVC projects (raysan5#4430)

* Use the vertex color as part of the base shader in GLSL330 (raysan5#4431)

* Add input_virtual_controls to MSVC projects (raysan5#4433)

Fix input_virtual_controls example to use correct default font sizes

* [build] CMake: Don't build for wayland by default (raysan5#4432)

This is to align with the behavior of raysan5#4369, see raysan5#4371 for rationale on
disabling Wayland by default.

* [build] [web] Fix examples `Makefile` for `PLATFORM_WEB` (raysan5#4434)

* Fix examples Makefile for PLATFORM_WEB

* Replace shell with assignment operator

* Replace tab with spaces

* Update Makefile.Web

* REVIEWED: WebGL2 (OpenGL ES 3.0) backend flags (PLATFORM_WEB) raysan5#4330

* Minor format tweaks

* Use mingw32-make for Windows (raysan5#4436)

* [rtextures/rlgl] Load mipmaps for cubemaps (raysan5#4429)

* [rlgl] Load cubemap mipmaps

* [rtextures] Only generate mipmaps that don't already exist

* [rtextures] ImageDraw(): Implement drawing to mipmaps

* [rtextures] Load cubemap mipmaps

* Reviewed formating to follow raylib conventions raysan5#4429

* Reviewed formatting, remove end-line points, for consistency with comments

* Update cgltf.h

* Update dr_mp3.h

* Update dr_wav.h

* Update qoa.h

* Update stb_image.h

* Update stb_image_resize2.h

* Update stb_truetype.h

* Fix examples Makefile for NetBSD (raysan5#4438)

* fix makefile

* moving to LDPATHS

* fix clean and ldlibs stuff

* Update Makefile

* REVIEWED: `LoadTextureCubemap()` to avoid crash raysan5#4429

* fix (raysan5#4440)

* [rtextures] LoadTextureCubemap(): Copy image before generating mipmaps, to avoid dangling re-allocated pointers (raysan5#4439)

* Fix MSVC errors for PLATFORM_DESKTOP_RGFW (raysan5#4441)

* (rcore_desktop_rgfw.c) fix errors when compiling with mingw

* define WideCharToMultiByte

* update RGFW

* move stdcall def to windows only

* fix raw cursor input

* Fix warnings, update RGFW, fix msvc errors (make sure windows macro _WIN32 is correct)

* Fix signed/unsigned mismatch in rlgl (raysan5#4443)

* Update README.md

* Fix empty input string for MeasureTextEx (raysan5#4448)

* Fix inconsistent dll linkage warning on windows (raysan5#4447)

* Update rcore_desktop_glfw.c

* Update rtext.c

* [shapes] Add `shapes_rectangle_advanced ` example implementing a `DrawRectangleRoundedGradientH` function (raysan5#4435)

* [rshapes] Add  function

* "[shapes] rectangle advanced: fix screen width and height to fit with other examples"

* fix the issue with GetScreenWidth/GetScreenHeight that was identified on other platforms (raysan5#4451)

* Fix SetWindowSize() for PLATFORM_WEB (raysan5#4452)

* Update HISTORY.md

* Update Makefile

* Update rmodels.c - 'fix' for GenMeshSphere artifact (raysan5#4460)

When creating a new sphere mesh with high number of slices/rings the top and bottom parts of the generated sphere are removed. This happens because the triangles in those parts, due to high resolution, end up being very small and are removed as part of the 'par_shapes' library's optimization. Adding par_shapes_set_epsilon_degenerate_sphere(0.0); before generating the sphere mesh sets the threshold for removal of small triangles is removed and the sphere is returned to raylib correctly.

* Added last week commits info

* RENAMED: `UpdateModelAnimationBoneMatrices()` to `UpdateModelAnimationBones()`

Still, not fully convinced of those functions naming, despite quite descriptive, sounds a bit confusing to me...

* Update raylib_api.* by CI

* Fix for issue 4454, MatrixDecompose() gave incorrect output for certain combinations of scale and rotation (raysan5#4461)

* Update CHANGELOG

* implemented new linear gradient generation function (raysan5#4462)

* Update Makefile.Web

* Update core_2d_camera_mouse_zoom.c

* fix float casting warnings (raysan5#4471)

* UpdateModelAnimation speedup (raysan5#4470)

If we borrow from the GPU skinned animation code, we can just multiply the vertex by the matrix * weight and shave a chunk of CPU time.

* Improve cross-compilation with zig builds (raysan5#4468)

- Add xcode_frameworks when cross compiling for mac (ref:
https://github.com/hexops/mach/blob/main/build.zig)
- Add emsdk when cross compiling for wasm (ref:
https://github.com/floooh/sokol-zig/blob/master/build.zig)

Signed-off-by: Tomas Slusny <[email protected]>

* [rcore]  Clipboard Image Support  (raysan5#4459)

* [rcore] add 'GetClipboardImage' for windows

* [rcore] GetClipboardImage removed some unneeded defines

* [rcore] PLATFORM_SDL: create a compatility layer for SDL3

* external: add win32_clipboard.h header only lib

* [rcore] using win32_clipboard on platforms rlfw and rgfw

* [rcore] fix warnings in SDL3 compatibility layer

* Makefile: Allow specifying SDL_LIBRARIES to link, this helps with SDL3

* Makefile: examples makefile now compile others/rlgl_standalone only when TARGET_PLATFORM is PLATFORM_DESKTOP_GFLW

* Makefile: examples makefile now compile others/rlgl_standalone only when TARGET_PLATFORM is PLATFORM_DESKTOP_GFLW

* [rcore]: PLATFORM_SDL: improve clipboard data retrieval

* external: remove unused function from win32_clipboard.h

* Makefile: allow for extra flags necessary when compiling for SDL3

* [rcore]: fix string typo

* [rcore]: Properly handle NULL dpi passing. As is allowed in SDL2

* external: fix arch finding on win32_clipboard.h to allow compilation on msvc cmake CI

* [rcore]: PLATFORM_SDL: Treat monitor as an ID in SDL3 as opposed to an index as in SDL2

* [rcore]: typo

* Update raylib_api.* by CI

* build.zig: Remove addRaylib and fix raygui builds when using raylib as dep (raysan5#4475)

- addRaylib just duplicates what adding raylib as dependency already does
  so it do not needs to exist
- move raygui build to standard build process when flag is enabled. this
  works correctly when using raylib as dependency and having raygui as
  dependency as well. problem with previous approach was that raygui was in
  options but it was doing nothing because you had to also use addRaygui for
  it to be effective

Signed-off-by: Tomas Slusny <[email protected]>

* Improved logos size

* Fix the X axis of the second vertex of the Y negative cap of a cylinders, triangle fan (raysan5#4478)

* Fix a typecast warning in glfw clipboard access (raysan5#4479)

* [rcore]: Issue an warning instead of an error when checking SUPPORT_CLIPBOARD_IMAGE necessary support detection (raysan5#4477)

* Fix the example lighting shaders to use both frag and diffuse colors so they work with shapes and meshes. (raysan5#4482)

* Update CHANGELOG

* build.zig: remove raygui from options and re add adding raygui as a (raysan5#4485)

function

* Fix Makefile.Web (raysan5#4487)

* Update CHANGELOG

* Update HISTORY.md

* Update CHANGELOG

* Fix touch count reset (raysan5#4488)

* Update raygui.h

* Updated Notepad++ autocomplete list for raylib 5.5

* Commented code issuing warnings on w64devkit (GCC)

Tested with w64devkit/MSVC and all seem to work as expected

* Updated raylib resource data

* Update raylib.ico

* Update emsdk path on Windows to match new raylib installer package

* Fix warnings in examples (raysan5#4492)

Move shapes/shapes_rectangle_advanced to the correct folder in MSVC project
Add core_input_virtual_controls.vcxproj back into sln file

* Fix typo in BINDINGS.md (raysan5#4493)

* Fixing an OBJ loader bug that fragmented the loaded meshes (raysan5#4494)

The nextShapeEnd integer is a pointer in the OBJ data structures.
The faceVertIndex is a vertex index counter for the mesh we are
about to create. Both integers are not compatible, which causes
the code to finish the meshes too early, thus writing the OBJ data
incompletely into the target meshes.

It wasn't noticed because for the last mesh, it process all remaining
data, causing the last mesh to contain all remaining triangles.

This would have been noticed if the OBJ meshes used different textures
for each mesh.

* Update CHANGELOG

* Update HISTORY.md

* Thanks @everyone for everything 😄

* Update HISTORY.md

* Update core_basic_window.c

* Update raylib.h

* Update raylib_api.* by CI

* Update webassembly.yml

* Update HISTORY.md

* removed workflows

* merge master

---------

Signed-off-by: Tomas Slusny <[email protected]>
Co-authored-by: Ray <[email protected]>
Co-authored-by: Jeffery Myers <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dave Green <[email protected]>
Co-authored-by: Tchan0 <[email protected]>
Co-authored-by: Hesham Abourgheba <[email protected]>
Co-authored-by: hanaxars <[email protected]>
Co-authored-by: carverdamien <[email protected]>
Co-authored-by: Michał Jaskólski <[email protected]>
Co-authored-by: Michal Jaskolski <[email protected]>
Co-authored-by: Chris Warren-Smith <[email protected]>
Co-authored-by: masnm <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: Jett <[email protected]>
Co-authored-by: base <[email protected]>
Co-authored-by: SusgUY446 <[email protected]>
Co-authored-by: CI <[email protected]>
Co-authored-by: foxblock <[email protected]>
Co-authored-by: Brian E <[email protected]>
Co-authored-by: Daniel Holden <[email protected]>
Co-authored-by: Asdqwe <[email protected]>
Co-authored-by: Ridge3Dproductions <[email protected]>
Co-authored-by: Daniil Kisel <[email protected]>
Co-authored-by: Menno van der Graaf <[email protected]>
Co-authored-by: Ashley Chekhov <[email protected]>
Co-authored-by: Nikolas <[email protected]>
Co-authored-by: Kacper Zybała <[email protected]>
Co-authored-by: Anthony Carbajal <[email protected]>
Co-authored-by: Magnus Oblerion <[email protected]>
Co-authored-by: Visen <[email protected]>
Co-authored-by: Colleague Riley <[email protected]>
Co-authored-by: Harald Scheirich <[email protected]>
Co-authored-by: William Culver <[email protected]>
Co-authored-by: Sage Hane <[email protected]>
Co-authored-by: Anand Swaroop <[email protected]>
Co-authored-by: yuval_dev <[email protected]>
Co-authored-by: Yuval Herman <[email protected]>
Co-authored-by: R-YaTian <[email protected]>
Co-authored-by: Jojaby <[email protected]>
Co-authored-by: Alan Arrecis <[email protected]>
Co-authored-by: Le Juez Victor <[email protected]>
Co-authored-by: Rapha <[email protected]>
Co-authored-by: Cypress <[email protected]>
Co-authored-by: Franz <[email protected]>
Co-authored-by: RadsammyT <[email protected]>
Co-authored-by: IcyLeave6109 <[email protected]>
Co-authored-by: Peter0x44 <[email protected]>
Co-authored-by: NishiOwO <[email protected]>
Co-authored-by: mpv-enjoyer <[email protected]>
Co-authored-by: Everton Jr. <[email protected]>
Co-authored-by: Arche Washi <[email protected]>
Co-authored-by: MikiZX1 <[email protected]>
Co-authored-by: waveydave <[email protected]>
Co-authored-by: decromo <[email protected]>
Co-authored-by: Tomas Slusny <[email protected]>
Co-authored-by: kimierik <[email protected]>
Co-authored-by: Oussama Teyib <[email protected]>
Co-authored-by: Eike Decker <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help needed - please! I need help with this issue platform: Web Web platform
Projects
None yet
Development

No branches or pull requests

2 participants