{"id":31767976,"url":"https://github.com/n-engine/esdebugger","last_synced_at":"2026-07-10T16:31:13.721Z","repository":{"id":92723010,"uuid":"73630939","full_name":"n-engine/esDebugger","owner":"n-engine","description":"simple OpenGL ES 2.0 debugger","archived":false,"fork":false,"pushed_at":"2017-11-13T16:52:56.000Z","size":225,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T01:53:14.664Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n-engine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-11-13T17:19:55.000Z","updated_at":"2018-11-30T15:46:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"be6982f3-b58d-471f-a960-a786eff51151","html_url":"https://github.com/n-engine/esDebugger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/n-engine/esDebugger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n-engine%2FesDebugger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n-engine%2FesDebugger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n-engine%2FesDebugger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n-engine%2FesDebugger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n-engine","download_url":"https://codeload.github.com/n-engine/esDebugger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n-engine%2FesDebugger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35337280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-10T01:50:36.411Z","updated_at":"2026-07-10T16:31:13.717Z","avatar_url":"https://github.com/n-engine.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esDebugger\n---\n\n## Overview\nesDebbuger is a simple OpenGL ES 2.0 debugger.\nIt is a collection of function to help debugging your code\nwhen you work on OpenGL ES 2.0. It can help you find error more easily\nand with a bit more \"explicit error message\".\n\n## Table of Contents\n* [Why esDebugger](#Why)\n* [Usage](#Usage)\n* [Reporting example](#Reporting)\n* [Licence](#Licence)\n* [Speed issue](#SpeedIssue)\n* [Note](#Note)\n* [Todo list](#TODO)\n* [Screenshot](#Screenshot)\n* [Changelog](#Changelog)\n* [Upcoming change](#Upcoming)\n\n\u003cA NAME=\"Why\"\u003e\n## Why esDebugger :\n\n1. I spent alot of time debugging a simple error on my engine.\u003cbr/\u003e\nLost alot of time and energy to understand what was wrong with my code.\u003cbr/\u003e\nAfter too much the same error code like \"GL_INVALID_OPERATION\" I needed\u003cbr/\u003e\nsomething more usefull, like a direct assert on any error and any wrong\u003cbr/\u003e\nsituation of using OpenGL (changing the same state 36 times for a frame\u003cbr/\u003e\nis not a good thing). So I made this *small* piece of code to help me\u003cbr/\u003e\ndebugging my engine.\u003cbr/\u003e\n2. There is no real tool out for debugging like gDebugger, codeXL\u003cbr/\u003e\nfor OpenGL ES 2.0 on Windows/Linux (or I dont known the existing tool)\u003cbr/\u003e\n3. Because there is alot of emulator for OpenGL es on Windows and Linux\u003cbr/\u003e\nBut these tools doesnt helped me at all and I was very frustrated\u003cbr/\u003e\nnot finding a simple bug ! With these tool, no problem (For my need)\u003cbr/\u003e\n\n\u003cA NAME=\"Usage\"\u003e\n## Usage :\nTake a look into the directory tests.\u003cbr /\u003e\nIn most case, when you need some help to debug your code.\u003cbr /\u003e\nJust replace the standard opengl headers with these headers :\u003cbr /\u003e\n\n* Replace:\n \n```\n#include \u003cEGL/egl.h\u003e\n#include \u003cGLES2/gl2.h\u003e\n```\n\n* With :\n\n```\n#include \u003cdebugger.h\u003e\n#include \u003cextensions.h\u003e\n```\nthe debugger need two step to be initialized :\u003cbr/\u003e\nfirst one : when you have created your display, call\u003cbr/\u003e\n```\nExtensions::initEgl( display );\n```\nAnd when you have all your display and surface ready, call\u003cbr/\u003e\n```\nExtensions::init( );\n```\n\nI made a Window class function to show you how to use it.\u003cbr/\u003e\nI tried to keep it simple and small.\u003cbr/\u003e\n\nYou can use the example code, as you want.\u003cbr/\u003e\nYou can replace all the base class used inside the whole debugger.cxx\u003cbr/\u003e\nor debugger.h easily (look at the miscs.cxx and miscs.h file)\u003cbr/\u003e\n\nThe code will report every call to console or to a log (it is up to you \u003cbr/\u003e\nto give a log system) By default the output is for the console\u003cbr/\u003e\nand the standard output (std::cout)\u003cbr/\u003e\n\n\u003cA NAME=\"Reporting\"\u003e\n## Reporting example :\n\nFrame ID - Calls function - where it was called @ which line\u003cbr/\u003e\n\n```\n1 glClearColor( 0.533333, 0.545098, 0.552941, 1 ) (ogles2/renderer.cxx@597)\n1 glDepthMask( flag:GL_TRUE ) (ogles2/renderer.cxx@481)\n1 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT ) (ogles2/renderer.cxx@652)\n1 glEnable( GL_BLEND ) (ogles2/renderer.cxx@624)\n1 glUseProgram( program:1 ) (ogles2/shader.cxx@1009)\n1 glActiveTexture( GL_TEXTURE0 ) (ogles2/texture.cxx@1484)\n1 glBindTexture( target:GL_TEXTURE_2D, texture:1 ) (ogles2/texture.cxx@1527)\n1 glUniform1i( location:1, v0:0 ) (ogles2/shader.cxx@811)\n1 glUniformMatrix4fv( location:0 count:1 transpose:GL_FALSE value[0]:1.81066 ) (ogles2/shader.cxx@1122)\n1 glEnableVertexAttribArray( index:0 ) (ogles2/vertexbuffer.cxx@163)\n1 glEnableVertexAttribArray( index:2 ) (ogles2/vertexbuffer.cxx@163)\n```\n.... and so one.\n\n\nThe code is not thread safe and alot buggy, so pardon me if you found\u003cbr/\u003e\nsomething strange =)\u003cbr/\u003e\n\n\u003cA NAME=\"Licence\"\u003e\n## Licence :\nThe licence was selected for the open source community.\u003cbr/\u003e\n\n\u003cA NAME=\"SpeedIssue\"\u003e\n## Speed issue :\nDont forget, it is a debugging tool.\u003cbr /\u003e\nIt is slow as hell when you have 300 function calls becase the lib\u003cbr /\u003e\nreport every function you call to a string buffer and report it\u003cbr /\u003e\nto a dialog (for now).\u003cbr /\u003e\n\n\u003cA NAME=\"Note\"\u003e\n## Note :\nThe OpenGL function was exported automatically with a bash script.\u003cbr/\u003e\nSo, all opengl function is not added to calls function history or error reporting, only these who I managed to work on.\u003cbr/\u003e\n\nI used [ANGLE](https://github.com/google/angle) for the dll, and some piece of code\u003cbr/\u003e\nthanks for the author of ANGLE ! (The licence is not the same, and I dont known\u003cbr/\u003e\nif i can mixe licence, let me known if I made something bad)\u003cbr/\u003e\n\u003cbr/\u003e\nI hope the esDebugger would be helpfull for someone else. Because it was for me.\u003cbr/\u003e\nFeel free to report bug, error, patch, request...\u003cbr/\u003e\n\n\u003cA NAME=\"TODO\"\u003e\n## Todo list :\n- [ ] Add more checkup on function\n- [ ] A texture viewer (dialog based ?)\n- [ ] A buffer viewer (same question as above)\n- [ ] Finish simple verification on all function\n- [ ] Move example to gtk or fltk\n\n\u003cA NAME=\"Screenshot\"\u003e\n## Screenshot\n\n![Screenshot](/screenshot.jpg?raw=true \"Screenshot\")\n\n\u003cA NAME=\"Changelog\"\u003e\n## Changelog\ntbd\n\n\u003cA NAME=\"Upcoming\"\u003e\n## Upcoming change\nCurrently, I am working on the texture side (On dialog, on Windows for now, but soon on fltk.)\nAdded the capability to watch every texture sent to opengl (ditto for mipmap level)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn-engine%2Fesdebugger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn-engine%2Fesdebugger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn-engine%2Fesdebugger/lists"}