\n# _wg37\n<a href="https:\/\/writingagame.com\/">WritingAGame.com<\/a> Chapter 37\n<br \/>\n<b>GameDev, 3D, cross-platform, C++, Visual Studio 2022, Android, Windows, OpenGL ES 3.2<\/b>\n<br \/>\n<a href="https:\/\/www.youtube.com\/watch?v=R8ZICjQ5ABQ">Demo<\/a>\n<br \/>\nWindows solution, <b>x86<\/b>: <br \/>\n<i>_wg37\\a997modeler\\p_windows\\p_windows.sln<\/i>\n<br \/>\nAndroid solution, <b>ARM64<\/b>: <br \/>\n<i>_wg37\\a997modeler\\p_android\\p_android.sln<\/i>\n<br \/>\n\n<\/pre><\/div>\n\n\n<\/p>\n\n\n\n
\u041c\u043e\u0439 .gitignore<\/em> \u0444\u0430\u0439\u043b – \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u044f GitHub-\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f Visual Studio:<\/p>\n\n\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https:\/\/github.com\/github\/gitignore\/blob\/main\/VisualStudio.gitignore\n\n# User-specific files\n*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop\/Xamarin Studio)\n*.userprefs\n\n# Mono auto generated files\nmono_crash.*\n\n# Build results\n[Dd]ebug\/\n[Dd]ebugPublic\/\n[Rr]elease\/\n[Rr]eleases\/\nx64\/\nx86\/\n[Ww][Ii][Nn]32\/\n[Aa][Rr][Mm]\/\n[Aa][Rr][Mm]64\/\nbld\/\n[Bb]in\/\n[Oo]bj\/\n[Ll]og\/\n[Ll]ogs\/\n\n# Visual Studio 2015\/2017 cache\/options directory\n.vs\/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot\/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files\/\n\n# MSTest test Results\n[Tt]est[Rr]esult*\/\n[Bb]uild[Ll]og.*\n\n# NUnit\n*.VisualState.xml\nTestResult.xml\nnunit-*.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS\/\n[Rr]eleasePS\/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts\/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts\/\n\n# ASP.NET Scaffolding\nScaffoldingReadMe.txt\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.tlog\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch\/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf\/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*\/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover\/*\n!.axoCover\/settings.json\n\n# Coverlet is a free, cross platform Code Coverage Tool\ncoverage*.json\ncoverage*.xml\ncoverage*.info\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net\/\n\n# Web workbench (sass)\n.sass-cache\/\n\n# Installshield output folder\n[Ee]xpress\/\n\n# DocProject is a documentation generator add-in\nDocProject\/buildhelp\/\nDocProject\/Help\/*.HxT\nDocProject\/Help\/*.HxC\nDocProject\/Help\/*.hhc\nDocProject\/Help\/*.hhk\nDocProject\/Help\/*.hhp\nDocProject\/Help\/Html2\nDocProject\/Help\/html\n\n# Click-Once directory\npublish\/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts\/\n\n# NuGet Packages\n*.nupkg\n# NuGet Symbol Packages\n*.snupkg\n# The packages folder can be ignored because of Package Restore\n**\/[Pp]ackages\/*\n# except build\/, which is used as an MSBuild target.\n!**\/[Pp]ackages\/build\/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**\/[Pp]ackages\/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx\/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf\/\nrcf\/\n\n# Windows Store app package directories and files\nAppPackages\/\nBundleArtifacts\/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n*.appxbundle\n*.appxupload\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!?*.[Cc]ache\/\n\n# Others\nClientBin\/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk\n# (https:\/\/github.com\/github\/gitignore\/pull\/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https:\/\/github.com\/github\/gitignore\/pull\/1529#issuecomment-104372622)\n#bower_components\/\n\n# RIA\/Silverlight projects\nGenerated_Code\/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files\/\nBackup*\/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup\/\n*.rptproj.bak\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n*.rptproj.rsuser\n*- [Bb]ackup.rdl\n*- [Bb]ackup ([0-9]).rdl\n*- [Bb]ackup ([0-9][0-9]).rdl\n\n# Microsoft Fakes\nFakesAssemblies\/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules\/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio 6 auto-generated project file (contains which files were open etc.)\n*.vbp\n\n# Visual Studio 6 workspace and project file (working project files containing files to include in project)\n*.dsw\n*.dsp\n\n# Visual Studio 6 technical files \n*.ncb\n*.aps\n\n# Visual Studio LightSwitch build output\n**\/*.HTMLClient\/GeneratedArtifacts\n**\/*.DesktopClient\/GeneratedArtifacts\n**\/*.DesktopClient\/ModelManifest.xml\n**\/*.Server\/GeneratedArtifacts\n**\/*.Server\/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket\/paket.exe\npaket-files\/\n\n# FAKE - F# Make\n.fake\/\n\n# CodeRush personal settings\n.cr\/personal\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__\/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools\/**\n# !tools\/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover\/\n\n# Azure Stream Analytics local run output\nASALocalRun\/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor\/\n\n# Local History for Visual Studio\n.localhistory\/\n\n# Visual Studio History (VSHistory) files\n.vshistory\/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\nMigrationBackup\/\n\n# Ionide (cross platform F# VS Code tools) working folder\n.ionide\/\n\n# Fody - auto-generated XML schema\nFodyWeavers.xsd\n\n# VS Code files for those working on multiple tools\n.vscode\/*\n!.vscode\/settings.json\n!.vscode\/tasks.json\n!.vscode\/launch.json\n!.vscode\/extensions.json\n*.code-workspace\n\n# Local History for Visual Studio Code\n.history\/\n\n# Windows Installer files from build outputs\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# JetBrains Rider\n*.sln.iml\n\n<\/pre><\/div>\n\n\n<\/p>\n\n\n\n
\n\n\n\n\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0430\u043c git<\/strong> \u043d\u0430 \u0412\u0430\u0448 \u043a\u043e\u043c\u043f.<\/p>\n\n\n\n\u0418\u0434\u0435\u043c \u043d\u0430 https:\/\/git-scm.com\/<\/a> -> Downloads -> Windows, \u0438 \u0442.\u0434.<\/p>\n\n\n\n\u041a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0438\u0434\u0435\u043c \u0432 Windows File Explorer<\/strong>, right-click \u043d\u0430 \u0412\u0430\u0448 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Git Bash Here<\/em>.
\u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.
\u0412\u044b \u0443\u0436\u0435 <\/strong>\u0432 \u0412\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u041d\u0430\u0431\u0438\u0440\u0430\u0435\u043c<\/p>\n\n\n\ngit init<\/code><\/pre>\n\n\n\n<\/p>\n\n\n\n
\u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u043e\u0434-\u043a\u0430\u0442\u0430\u043b\u043e\u0433 .git<\/em>.<\/p>\n\n\n\n\u0412\u0435\u0442\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f master<\/em>, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043d\u0430 GitHub-\u0435 \u0432\u0435\u0442\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f main<\/em>.<\/p>\n\n\n\n\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0442\u043e\u043c \u0441 \u043c\u0435\u0440\u0436\u0435\u0432\u0430\u043d\u0438\u0435\u043c (\u0441\u043b\u0438\u044f\u043d\u0438\u0435\u043c) \u0432\u0435\u0442\u043e\u043a, \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0432\u0435\u0442\u043a\u0443 main <\/em>\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0432\u0437\u044f\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438\u0437 master<\/em>-\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n\n\n\ngit branch -m master main<\/code><\/pre>\n\n\n\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432 \u0412\u0430\u0448 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <\/em>git (\u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 .gitignore<\/em>):<\/p>\n\n\n\ngit add .<\/code><\/pre>\n\n\n\n- \u041d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u043e\u0447\u043a\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435.<\/li><\/ul>\n\n\n\n
\u041f\u043e\u0442\u043e\u043c \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 commit<\/em>:<\/p>\n\n\n\ngit commit -m \"initial commit\"<\/code><\/pre>\n\n\n\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443:<\/p>\n\n\n\n
git remote add origin https:\/\/github.com\/your_git_account\/your_repository_name<\/code><\/pre>\n\n\n\n- \u042d\u0442\u043e \u043e\u0434\u043d\u0430 <\/em>\u0441\u0442\u0440\u043e\u043a\u0430<\/li><\/ul>\n\n\n\n
\u0418 \u0437\u0430\u043b\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439:<\/p>\n\n\n\n
git push -u origin main<\/code><\/pre>\n\n\n\n\u0418 \u0432\u0441\u0451! \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043d “\u0432 \u044d\u0444\u0438\u0440\u0435”.<\/p>\n\n\n\n
\n\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"
\u0414\u043b\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043c\u044b \u0441 \u0412\u0430\u043c\u0438 \u0442\u043e\u0447\u043d\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u041f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441 https:\/\/github.com\/bkantemir\/_wg37 Windows solution, x86: _wg37-main\\a997modeler\\p_windows\\p_windows.sln Android solution, ARM64: _wg37-main\\a997modeler\\p_android\\p_android.sln \u0412\u0430\u0436\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f: \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u044f\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 C:\\CPP, \u0432\u0441\u0435 \u043f\u0443\u0442\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u041a\u0430\u043a ..\\..\\engine \u0432\u043c\u0435\u0441\u0442\u043e C:\\CPP\\engine. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0438\u0437 […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1374","post","type-post","status-publish","format-standard","hentry","category-cross-platform-3d"],"_links":{"self":[{"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/posts\/1374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/comments?post=1374"}],"version-history":[{"count":21,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/posts\/1374\/revisions"}],"predecessor-version":[{"id":1661,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/posts\/1374\/revisions\/1661"}],"wp:attachment":[{"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/media?parent=1374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/categories?post=1374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/writingagame.ru\/index.php\/wp-json\/wp\/v2\/tags?post=1374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}