The triangle didn't do anything, didn't have color, didn't rotate, yet its existence was an awe-inspiring revelation. A few lines of code and I could create this image on my screen from three single points in 3d space. I was blown away!!!
I had invested in a 3dfx graphics card (I was also using a 19200 baud modem), a technological marvel that demanded integration with my existing video card and extensive setup. Despite the complexities, the visual output it offered was nothing short of remarkable, fueling my determination to delve deeper into this captivating realm.
I wanted more! I searched night and day (non-stop) for more examples... Nothing! I even reached out the original author of the triangle code... Nothing! I went to the local library (because that's what you did back then) to look for a book on OpenGL... Nothing!
The online landscape yielded minimal information, leaving me with no choice but to adopt a self-guided approach. Armed with limited documentation and a fledgling understanding of Visual Studio 6.0, I set out on an educational journey.
It was through this arduous process that I deciphered the inner workings of GLut and endeavored to replicate its functionality without relying on it directly (Lesson 1: screen setup).
My insights and discoveries found a home in notebooks and sketches on graph paper – reminiscent of a bygone era. But my focus was solely on personal growth and learning, rather than teaching others.
The release of my second demo (Lesson 2: the triangle) marked a turning point. Sharing it with a friend kindled a spirited discussion about the boundless potential of OpenGL, akin to the revolutionary work of ID Software.
Subsequent demos, including one introducing color rendering, sparked a cascade of inquiries from friends eager to comprehend the nuances of graphics programming. From clearing screens to manipulating objects, the thirst for knowledge was palpable.
My documentation transitioned from physical notebooks to digital .nfo files (the elite extension), a more convenient medium for sharing insights. Gradually, these materials found a virtual home on my personal webpage, which had previously been a repository of diverse projects (tapeworm, dukemap, atari demos, 6502 code). Although modestly frequented, this platform was gradually evolving into a repository of tutorials for my close-knit community.
A pivotal moment arrived with the creation of "Stars," a demo I submitted to 3dFiles competition. The accolades it garnered led to an invitation to establish a dedicated OpenGL section on the 3dFiles website. This transition marked my shift from sporadic code snippets to comprehensive tutorials. Given the lack of accessible OpenGL resources, my aim was to share knowledge and ignite widespread interest.
As my visibility expanded, the influx of views and feedback was both humbling and exhilarating. From novices surpassing artistic boundaries to professionals embedding my code in projects, the impact was far-reaching. An email from an ID Software team member further underscored the significance of my contributions.
While five tutorials had already been published, I sensed the need to bridge gaps with further content. My daily routine now encompassed coding, meticulous documentation, prompt email responses, and the exhaustive task of transforming notes into coherent tutorials.
This iterative process eventually led to a pace of releasing three to four tutorials weekly, each striving to outshine its predecessor. This period of prolific output, in hindsight, marked an intense and demanding phase that tested both my physical and mental limits.
As my audience continued to grow, my commitment to personally addressing every email remained resolute. Collaborative ventures flourished, including notable collaborations on projects like "opengl asteroids". User feedback consistently informed iterative improvements, often spanning multiple tutorials and download links. I also prioritized refining code quality and modernizing techniques, with collaborative contributions resulting in over 30 iterations of the base code.
The transition to GameDev represented a pivotal shift, driven by its focus on code, minimized advertisements, and enhanced user autonomy. This migration prompted a comprehensive overhaul, prioritizing user experience through streamlined navigation and customization. Collaborating with industry stakeholders, I procured hardware prizes and initiated contests, fostering community engagement and culminating in numerous code ports for various platforms.
The ensuing contests bore witness to remarkable entries, showcasing the remarkable potential of a vibrant community. Consistent updates effectively addressed concerns about outdated code, rekindling user enthusiasm and satisfaction.
Throughout my tenure at GameDev, I authored 48 tutorials, each meticulously crafted to elucidate complex OpenGL concepts. The website transformed into a veritable treasure trove, empowering enthusiasts to delve deep into the realm of graphics programming.
By this point there were dozens of sites hosting my tutorials (rebranded as theirs of course), there were a handful of absolutely amazing NEW sites with original content, and many professional sites starting to offer more than I ever could (as a single person). 3dfx had vanished, GameDev wasn't sponsoring or paying me, meaning all the prizes I was giving out were coming out of my own pocket. The questions via email were getting more and more complex and more and more demanding, and I started seeing the bad seeds. I'd get an email from joe blow asking me to plug his site, telling me how if it wasn't for my site, his site wouldn't exist. So I'd work with joe blow to craft a message he was happy with. I'd do a HUGE post about the amazing things on joe blows site, only to see a post from him the next day saying "NeHe's stuff is junk, this is where you need to be".
15+ years running web sites, personal site, 3-5 years at 3dFiles, maybe 10 at gamedev? and I'm burnt! I'm deep into the game of life and boy did it have some curve balls for me...
My brother's health deteriorated, marked by severe migraines, unsteadiness, and persistent sickness. The cause was traced to both his kidneys, which had hardened and ceased to function. Dialysis became a regular ordeal, and he joined a waiting list for a potential donor.
Simultaneously, my personal life faced upheaval. The strain of late-night coding sessions, the rural setting in a rental home due to financial constraints, and other factors led to a decline in my relationship.
Tragedy struck again when my mother discovered a lump on her back, a sinister sign of cancer. Addressing this on my website, I was met with incredulity and even accusations of ulterior motives, a deeply hurtful experience amid an already challenging period.
The passing of my mother plunged me into emotional turmoil, pushing aside any thoughts of maintaining the website. Despite my efforts to keep users informed, I found myself grappling with disparaging comments from detractors.
My personal life continued to unravel as my spouse departed. In the midst of this turmoil, a distressing call came from my brother, notifying me of our father's hospitalization. Racing to his side, I arrived only to witness his sudden passing without the chance to bid farewell.
Adding to the burden, the bank mishandled payments intended for insurance coverage during my mother's illness, leading to the cancellation of their insurance plan. Consequently, my brother and I were forced to plan and finance a second funeral, compounding our grief.
Amidst this cascade of challenges, I reached a point where I could no longer sustain the site's operations. I communicated my decision to GameDev, hoping they would steward its legacy.
Regrettably, my hopes were dashed as GameDev's management failed to uphold the site's standards. Updates dwindled, themes vanished, downloads ceased, and the tutorials grew increasingly outdated.
In the face of these circumstances, this page serves a specific purpose – to lay down some unequivocal facts: