Hi!
MY Programs, Source Codes
I'm glad you like my work and show interest. Two years ago, I gathered all my older projects from various storage devices to have them stored in one place, ensuring that nothing would be lost. Last April, I started studying B4A. Before that, I was programming in QB64 for Windows. I knew nothing about OpenGL because, in QB64, you can use a simple command (MAPTRIANGLE) to perform 3D drawing.
Last April, I was thrilled to discover B4A—an amazing, perhaps the only, opportunity to develop for Android using the BASIC programming language at a professional level. To bring my old ideas to life, I had to learn OpenGL. I found examples on this forum, such as drawing a cube. Once I got it working and understood the basics, I was able to expand my knowledge (gldrawelements, lighting, normals, cullface, and many other possibilities)—all while still not fully understanding how B4A and the Android system itself function optimally (e.g., startservice, multi-threading).
The bottom line is that this is the result of 20 years of work, and it’s public. It’s a 2GB zip file embedded in an HTML menu structure, with videos, descriptions, source codes, and explanations. It covers game development (such as a server-based 3D FPS shooter), mathematics, algorithmic music, 4D space visualization, soft-body physics, general physics, CNC machine building, electronics, personal ideas, and inventions. I’m happy to share this archive with anyone interested.
Currently, it doesn’t contain any B4A-related content, as I haven’t added anything since last April. Eventually, I will create a section where I write in detail about my experiences with B4A. The QB64 code can be used in B4A with only minor syntax differences.
3D Engine
When I didn’t fully understand OpenGL, I wanted to build a game engine that would make it easy to render a triangle in 3D space. But! The more I learned about OpenGL’s capabilities, the more I realized that if someone truly wants to take full advantage of all its features, using a translation layer (or engine) is completely unnecessary. You just need to learn OpenGL. It is well-structured (although I don’t agree with the operational principles of some aspects), but it cannot be simplified any further.
In fact, I have to disappoint you! OpenGL has existed since 1993. Instead of maintaining backward compatibility properly, it seems they allowed older programs to continue running on different devices out of mercy? Pity? So they would appear to be backward compatible. Even on new hardware, old programs can still run.
Currently, we have OpenGL ES 2.0 for Android (I hope I wrote that correctly). But it’s not better, not smarter—actually, quite the opposite! Many features have been removed. If a new version comes out for newer mobile devices, it will likely be even less backward compatible!
For example:
- The Z-buffer write and Z-buffer test cannot be separated. Either both are on, or both are off.
- Lighting effects: You cannot disable the illumination of individual textures when using multiple light sources. Either all light sources are calculated, or none at all.
Both of these are absurd limitations because, in a serious graphical scene, these features should work properly.
The solution is shader-based programming or using a low-level API like Vulkan. I suspect this is partly due to economic policies and partly due to optimization efforts. If you develop in a specialized 3D game engine (like Unity, Godot, etc.), those engines continuously improve and expand their low-level graphics engines, allowing you to achieve great results without needing to understand the underlying programming. Everything is optimized and fast.
If you want stunning visuals, avoid low-level programming and use these engines instead. This realization is disappointing—I’m 20 years late. It would have been great to know this much about OpenGL 20 years ago.
Long-term, I wouldn’t recommend learning OpenGL from scratch. However, if you want to create something similar to my games, I do recommend learning OpenGL. If you just want basic rendering or to get started with OpenGL in B4A, I’m happy to help.