{"id":13731736,"url":"https://github.com/tommai78101/InitializingOpenGL","last_synced_at":"2025-05-08T05:30:38.921Z","repository":{"id":77985985,"uuid":"156162927","full_name":"tommai78101/InitializingOpenGL","owner":"tommai78101","description":"A book written in my own spare time, that has notes on how to begin an OpenGL project.","archived":false,"fork":false,"pushed_at":"2020-01-04T22:33:37.000Z","size":25351,"stargazers_count":45,"open_issues_count":11,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-14T22:35:41.287Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tommai78101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2018-11-05T04:56:09.000Z","updated_at":"2022-08-06T05:39:24.000Z","dependencies_parsed_at":"2023-04-23T10:30:59.155Z","dependency_job_id":null,"html_url":"https://github.com/tommai78101/InitializingOpenGL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommai78101%2FInitializingOpenGL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommai78101%2FInitializingOpenGL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommai78101%2FInitializingOpenGL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommai78101%2FInitializingOpenGL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tommai78101","download_url":"https://codeload.github.com/tommai78101/InitializingOpenGL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253008357,"owners_count":21839638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-08-03T02:01:37.318Z","updated_at":"2025-05-08T05:30:38.909Z","avatar_url":"https://github.com/tommai78101.png","language":"C","funding_links":[],"categories":["Graphics"],"sub_categories":[],"readme":"# Initializing OpenGL: \u003cspan style=\"font-size: 75%\"\u003eA Sadistic Approach to Modern OpenGL\u003c/span\u003e\n\nA book written in my own spare time, that has notes on how to begin an OpenGL project. The main goal of writing this book, is so a complete beginner can follow along and learn as much as they can with a ton of information as possible. And it is because of this goal, I need to cite a lot of references and do research to make sure the information I got is accurately represented to the readers. And it will take a while to complete each chapter.\n\n|OpenGL versions|Goals|\n|:---:|:---|\n|1.X, 2.X, 3.2+, 4.X|Initialization only|\n|3.1|Outlier OpenGL support|\n|any|Depends on book progress|\n|4.6|End goal|\n\n\nCurrently, the book is not done, but I am releasing an \"alpha\" version of the book. It's provided both as a DOCX file, and a PDF file for viewing pleasures. This is a reward for you searching and lurking on Github, or that somehow this book was found by a search engine, and you just so happened to see this book appearing in the search results. And thus, it is why this book is secretly hidden away online.\n\nDOCX file must embed system fonts for compatibilty with Windows, MacOS X, and Ubuntu/Linux.\n\nScroll on down to see the future roadmap. Table of Contents will be updated whenever new contents are added to the draft.\n\n------\n\n## Table of Contents\n\n```\nPREFACE ........................................................................... 1 \nCHAPTER 1 ......................................................................... 3 \n\tInstallation .............................................................. 4 \n\tPicking Your Poison ....................................................... 5 \n\tDevelopment Setup ......................................................... 6 \nCHAPTER 2 ........................................................................ 11\n\tChoosing an OpenGL Version ............................................... 12\n\t\tDrawbacks of Very Old OpenGL Versions ............................ 13\n\t\tConsider the Not-So-Old OpenGL Versions .......................... 15\n\t\tSummarized OpenGL Initialization Steps ........................... 17\n\tCreation of a Window ..................................................... 18\n\t\tUsing the WinMain() Entry Point .................................. 19\n\t\tUsing the Main() Entry Point ..................................... 21\n\tA Dummy OpenGL Context ................................................... 23\n\t\tThe Pixel Format Descriptor ...................................... 24\n\t\tUnderstanding Pixel Formats ...................................... 27\n\t\tChoosing and Setting a Pixel Format .............................. 31\n\tInitialization of OpenGL ................................................. 34\n\t\tIntroduction to Loading Libraries ................................ 34\n\t\tModularizing our Entry Points .................................... 36\n\tHybrid Graphics Support .................................................. 37\n\t\tBrief History of Intel Integrated Graphics ....................... 37\n\t\tHandling the Consequences of Dual Graphics ....................... 39\n\tSummary .................................................................. 46\n\t\tFull Source Code (Including Notes) ............................... 46\n\nREFERENCES ....................................................................... 58 \n\nAPPENDIX ......................................................................... 62 \n\tA Hungarian Notation Trick ................................................ i \n\tDocumented Quirks ........................................................ iv \n\t\tShowWindow Getting Ignored on First Invocation ................... iv \n\t\tThe “sprintf” History ............................................. v \n\tByte Ordering (Part 1/3) ............................................... viii \n\tA Unicode Primer (Part 2/3)................................................ x \n\t\tWhat is Unicode? ................................................. xi \n\t\tUCS-2 ............................................................ xi \n\t\tUTF-16 ........................................................... xi \n\t\tUCS-4 and UTF-32 ................................................. xv \n\t\tUTF-1 ........................................................... xvi \n\t\tUTF-8 ............................................................ xx \n\t\tWhat is next? ..................................................xxiii \n\tApplying Unicode (Part 3/3) ............................................ xxiv \n\t\tMaking Common Functions ........................................ xxiv \n\t\tConverting UTF-16 to UTF-8 .................................... xxvii \n\t\tConverting UTF-8 to UTF-16 ..................................... xxxv \n\t\tConverting UTF-32 to UTF-8 ...................................... xli \n\t\tConverting UTF-8 to UTF-32 ..................................... xliv \n\t\tConverting UTF-32 to UTF-16 .................................... xlix \n\t\tConverting UTF-16 to UTF-32 ..................................... liv \n```\n\n------\n\n## Roadmap\n\n(Updated: January 1, 2019 - Included scheduling conflicts with real-life into the timeline.)   \n(Updated: March 20, 2019 - Adjusting schedule to update the book only on weekends.)    \n(Updated: August 4, 2019 - Finished Triangle/Hexagon OpenGL back in July, was about to write book, but real life got in the way.)\n\n|Timeline|Topic of Interests|Estimated page counts|\n|:---|:---|---:|\n|November 8, 2018 ~ November 26, 2018|Personal Vacation Trip|N/A|\n|November 28, 2018 ~ December 10, 2018|Finish the Appendix (Postponed)|10|\n|January 28, 2019 ~ February 24, 2019|Finish the Appendix|10|\n|***February 9, 2019 ~ February 24, 2019***|***Feedback Phase***|***N/A***|\n|February 25, 2019 ~ March 1, 2019|Do tax returns (Time may change!)|N/A|\n|March 1, 2019 ~ March 17, 2019|Rewrite \"Initialization of OpenGL\" in Chapter 2|5|\n|March 1, 2019 ~ April 1, 2019|Continue creating OpenGL context|10|\n|May 2019 ~ July 2019|Get triangle showing up|15|\n|August 2019 ~ October 2019|Boilerplate code in C and C++ **(Delayed)**|25|\n|***August 5, 2019 ~ TBD***|***Real Life Takes Over***|***N/A***|\n|Future|Depends on Issues/Feedback/Real Life|N/A|\n\n\u003cdiv style=\"display: inline-block; height: 30px;\"\u003e\u003c/div\u003e\n\n|Estimated final total pages count (not including Appendix)|Current total pages count (not including Appendix)|\n|--:|--:|\n|110|57|\n\n------\n\n## Sneak Peek\n\nThis is what I planned to add to Chapter 3 before something happened in real life:\n\n\u003cimg src=\"https://raw.githubusercontent.com/tommai78101/InitializingOpenGL/master/images/hexagon.gif\" /\u003e\n\n------\n\n## How to Contribute\n\nI welcome those who contribute by reporting an Issue. **Those who do, will be listed as a co-author.**\n\nJust state the summary of the topic and list out what you wished to read about. If possible, if you have resources and research materials provided in the Issue report, I'll gladly do my best to get all the details in.\n\n------\n\n## Credits\n\n### Main Authors\n\n* Author: Thompson Lee  \n* Co-Author: wedr  \n\n### Contributors\n\n* solidfox  \n* d3xor  \n* gehn  \n* rindolf  \n* nitrix  \n* vendu  \n* niggler  \n* WinterMute  \n* ScrisM  \n* fincs  \n* yellows8  \n* smea  \n\n### Github Contributors\n\n* nickrolfe\n* gogoprog (Issue #13)\n\n### Reddit Contributors\n\n* PcChip\n* SkyrimForSwitch\n* silwr\n\n### Other contributors\n\n* Martijn Steinrucken\n* The ##programming Freenode IRC channel  \n* The ##javascript Freenode IRC channel \n* The ##opengl Freenode IRC channel \n* The Khronos Group\n* Stack Overflow  \n* Microsoft  \n* Google\n* MSDN Community  \n* MSDN Docs  \n* Reddit\n\nMIT Licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommai78101%2FInitializingOpenGL","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftommai78101%2FInitializingOpenGL","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommai78101%2FInitializingOpenGL/lists"}