<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Всё о создании игр</title>
		<link>https://gcup.ru/</link>
		<description>Форум игроделов</description>
		<lastBuildDate>Tue, 22 Jul 2025 21:01:00 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://gcup.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Защита процесса. Защита файла</title>
			<link>https://gcup.ru/forum/62-28210-1</link>
			<pubDate>Tue, 22 Jul 2025 21:01:00 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Создание защиты для неигрового проекта&lt;br /&gt;Автор темы: fireday&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 29</description>
			<content:encoded>Всем доброго времени суток! &lt;br /&gt; Программа для мониторинга компьютеров в учебные заведения. &lt;br /&gt; Программа будет ставиться официально, т.е. прятать ее процесс и т.п. не надо, хотя, как защиту можно использовать. &lt;br /&gt; Система клиент-сервер. Надо защитить клиент - процесс от закрытия, а файл от удаления. &lt;br /&gt; Защита нужна дабы школьники не потерли софтину (клиент). &lt;br /&gt; На компьютерах учеников нету прав Админа. &lt;br /&gt; пишу на visual basic 6.0 &lt;br /&gt; =========== &lt;br /&gt; Какие есть идеи? &lt;br /&gt; У меня пока такие: &lt;br /&gt; От удаления: для начала сделать файл скрытым и системным. &lt;br /&gt; От удаления защитить открытием файла на запись, но вот открыть работающий ехе-шник не получится.. Да и отцепить файл можно, тем же анлокером, да прибить. &lt;br /&gt; В то же время запущенный файл тоже не удалить. И даже если запускать при закрытии заново, все равно пряморукие смогут снести. &lt;br /&gt; Для защиты от закрытия процесса - сделать дополнительный процесс, который следит за первым. Если он обнаруживает что первого процесса нету, то, например, ребутит ПК или запускает процесс заново. &lt;br /&gt; Для защиты второго процесса первый ведет аналогичную деятельность. &lt;br /&gt; Но это может быть накладно в плане производительности (постоянно получать список процессов, искать в них нужный). &lt;br /&gt; По этому думаю внедрить библиотеку в критически важный системный процесс. И что бы эта библа следила за работой программы. &lt;br /&gt; В принципе как внедрять библу знаю, но на деле возникают накладки. Получается инжект тольк в себя. &lt;br /&gt;&lt;br /&gt; п.с. Так же по поводу чтения файлов. Я сделал так, отдельная библа длл читает из файла/реестра, что бы не палить пути в поцессе. &lt;br /&gt; Поможет ли это от пряморуких? &lt;br /&gt; п.п.с. Клиент не консольный, а оконный, по этому заинжектить клиент в виде библы в процесс не вариант.</content:encoded>
			<category>C/C++</category>
			<dc:creator>fireday</dc:creator>
			<guid>https://gcup.ru/forum/62-28210-1</guid>
		</item>
		<item>
			<title>Непонятно почему такие координаты.</title>
			<link>https://gcup.ru/forum/62-103720-1</link>
			<pubDate>Tue, 22 Jul 2025 20:48:23 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Может кто нибудь даст идею какую нибудь?&lt;br /&gt;&lt;img src=&quot;https://i.imgur.com/9MRiPfH.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;кликаю в конец экрана по горизонтали. показывает такие координаты.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;!!!! 1548,413940 349,770935; 3144 1334; widget: 824 600&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;сам код.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(key-&gt;type == GDK_BUTTON_PRESS &amp;&amp; key-&gt;button == 1&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double x = key-&gt;x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double y = key-&gt;y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int w, h;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gtk_widget_get_size_request(GTK_WIDGET(self&amp;#41;, &amp;w, &amp;h&amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&quot;!!!! %f %f; %d %d; widget: %d %d&amp;#92;n&quot;, x, y, scene_width, scene_height, w, h&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;по x координате получается меньше чем scene_width в два раза, но больше чем размер виджета в два раза. scene_width получаем при сигнале resize для получения размера для рисования opengl.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-103720-1</guid>
		</item>
		<item>
			<title>Как преобразовать строку времени в тип std::filesystem::file</title>
			<link>https://gcup.ru/forum/62-104121-1</link>
			<pubDate>Tue, 22 Jul 2025 20:39:43 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: Goga_77&lt;br /&gt;Автор последнего сообщения: Искусительница&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Здравствуйте.&lt;br /&gt;Есть строка, в которой задано время &quot;22.08.2023 17:07&quot;&lt;br /&gt;Нужно сравнить с временем возвращенным функцией std::filesystem::last_write_time() в цикле.&lt;br /&gt;Видимо нужно преобразовать строку &quot;22.08.2023 17:07&quot; в тип std::filesystem::file_time_type&lt;br /&gt;Подскажите, можно ли это как то сделать?</content:encoded>
			<category>C/C++</category>
			<dc:creator>Goga_77</dc:creator>
			<guid>https://gcup.ru/forum/62-104121-1</guid>
		</item>
		<item>
			<title>Книги о геймдеве</title>
			<link>https://gcup.ru/forum/62-33798-1</link>
			<pubDate>Wed, 15 Nov 2023 20:29:39 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: SilverOverlord&lt;br /&gt;Автор последнего сообщения: DedPooll&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>Посоветуйте книги о программировании игр на языке c/c++. С учётом того, что в языке я разбираюсь. &lt;br /&gt; При этом книги, не связанные с отрисовкой графики (а таких много) и игровым ИИ. Желательно - что-нибудь из области проектирования классов в программе и повышения быстродействия.</content:encoded>
			<category>C/C++</category>
			<dc:creator>SilverOverlord</dc:creator>
			<guid>https://gcup.ru/forum/62-33798-1</guid>
		</item>
		<item>
			<title>Подскажите книги по c++</title>
			<link>https://gcup.ru/forum/62-44978-1</link>
			<pubDate>Wed, 15 Nov 2023 20:25:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: Nikstoun&lt;br /&gt;Автор последнего сообщения: DedPooll&lt;br /&gt;Количество ответов: 19</description>
			<content:encoded>Приветствую замечательных ситцов замечательного форума ! Решил изучать с++ . Подскажите ДЕЛЬНЫЕ книги по его изучению . &lt;br /&gt; P.S. Не просто книги . А именно ДЕЛЬНЫЕ ...</content:encoded>
			<category>C/C++</category>
			<dc:creator>Nikstoun</dc:creator>
			<guid>https://gcup.ru/forum/62-44978-1</guid>
		</item>
		<item>
			<title>Ищем с++ разработчика</title>
			<link>https://gcup.ru/forum/62-103873-1</link>
			<pubDate>Thu, 25 Aug 2022 13:29:57 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Ищем с++ разработчика под игру Perfect World&lt;br /&gt;Автор темы: Invaderpw&lt;br /&gt;Автор последнего сообщения: Invaderpw&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Ищем &lt;b&gt;с++&lt;/b&gt; разработчика под игру &lt;b&gt;Perfect World&lt;/b&gt; для работы на &lt;b&gt;постоянной&lt;/b&gt; основе (не единоразовые заказы, такое не интересует) ищем конкретно человека в команду со стабильной оплатой, ставка или же за конкретную разработку, уже договоримся на месте.&lt;br /&gt;&lt;br /&gt;Нужен человек который желает влиться в хороший, профессиональный коллектив и вместе работать над успешностью проекта.&lt;br /&gt;Недобросовестных людей - просьба не тратить ни наше ни ваше время.&lt;br /&gt;&lt;b&gt;Писать в Телеграмм - @silva959&lt;/b&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>Invaderpw</dc:creator>
			<guid>https://gcup.ru/forum/62-103873-1</guid>
		</item>
		<item>
			<title>Реклама в android играх проекта на C++</title>
			<link>https://gcup.ru/forum/62-103773-1</link>
			<pubDate>Sat, 07 May 2022 07:27:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: SDL2&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Я вроде как догадываюсь, но ни разу не делал так еще. Вот я делаю игры на C++ SDL2, получается, например я могу с yandex ad aar скачать, как то подключить, и из c++ кода дергать java методы. Получается, надо отдельный класс с рекламой и методами отрисовки. Правильно ли я всё понимаю? Кто-нибудь работал так? Были ли какие-нибудь проблемы?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-103773-1</guid>
		</item>
		<item>
			<title>Как сделать обход препятствий в С++ Builder???</title>
			<link>https://gcup.ru/forum/62-103581-1</link>
			<pubDate>Thu, 11 Nov 2021 20:34:42 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: Razuvai&lt;br /&gt;Автор последнего сообщения: Fire_Phoenix&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Как сделать обход препятствий в С++ Builder???&lt;br /&gt;Движение игрока по клику мыши уже готово.&lt;br /&gt;Вот мой код:&lt;br /&gt;void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,&lt;br /&gt;int X, int Y)&lt;br /&gt;{&lt;br /&gt;x=X;&lt;br /&gt;y=Y;&lt;br /&gt;Timer1-&gt;Enabled=true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void __fastcall TForm1::Timer1Timer(TObject *Sender)&lt;br /&gt;{&lt;br /&gt;if (Image1-&gt;Top&gt;y) Image1-&gt;Top=Image1-&gt;Top-1;&lt;br /&gt;if (Image1-&gt;Top&lt;y) Image1-&gt;Top=Image1-&gt;Top+1;&lt;br /&gt;if (Image1-&gt;Left&gt;x) Image1-&gt;Left=Image1-&gt;Left-1;&lt;br /&gt;if (Image1-&gt;Left&lt;x) Image1-&gt;Left=Image1-&gt;Left+1;&lt;br /&gt;if (Image1-&gt;Top==y &amp;&amp; Image1-&gt;Left==x) Timer1-&gt;Enabled=false;&lt;br /&gt;}</content:encoded>
			<category>C/C++</category>
			<dc:creator>Razuvai</dc:creator>
			<guid>https://gcup.ru/forum/62-103581-1</guid>
		</item>
		<item>
			<title>Движение игрока по клику мыши в C++ builder</title>
			<link>https://gcup.ru/forum/62-103560-1</link>
			<pubDate>Wed, 27 Oct 2021 17:41:15 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: Razuvai&lt;br /&gt;Автор последнего сообщения: FlyOfFly&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Движение игрока по клику мыши в C++ builder???</content:encoded>
			<category>C/C++</category>
			<dc:creator>Razuvai</dc:creator>
			<guid>https://gcup.ru/forum/62-103560-1</guid>
		</item>
		<item>
			<title>тайловый редактор gtiled [в разработке]</title>
			<link>https://gcup.ru/forum/62-103046-1</link>
			<pubDate>Fri, 12 Feb 2021 12:53:39 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: DmitriyFomin&lt;br /&gt;Количество ответов: 16</description>
			<content:encoded>&lt;img src=&quot;https://i.imgur.com/D6Ts5pA.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;&lt;br /&gt;GTILED - тайловый редактор. Захотелось сделать такой редактор для своей игры. Tiled не устроил. В этой версии можно делать бесконечный мир и сохранять в обычный массив. Вот видео с демонстрацией.&lt;br /&gt;&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr15eZ1KR700&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://www.youtube.com/watch?v=nGXUePOdc4A&amp;feature=youtu.be&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr15eZ1KR700&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;&lt;br /&gt;&lt;br /&gt;вот ссылка на &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/gtiles&quot; title=&quot;https://github.com/xverizex/gtiles&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-103046-1</guid>
		</item>
		<item>
			<title>Opengl and Sprite</title>
			<link>https://gcup.ru/forum/62-103070-1</link>
			<pubDate>Sat, 09 Jan 2021 11:06:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Need help&lt;br /&gt;Автор темы: current_user&lt;br /&gt;Автор последнего сообщения: current_user&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Всем привет!&lt;br /&gt;&lt;br /&gt;Подскажите как лучше организовать клаc спрайта для 2D textures ?&lt;br /&gt;&lt;br /&gt;Для погружения в opengl пишу небольшой движок , для работы с текстурами создал класс и обработчик для текстурного атласа. Сейчас думаю что должно быть в спрайте , тупо переношу туда вершинные и текстурные координаты и методы работы с матрицами преобразований ? &lt;br /&gt;Как лучше связывать созданную текстуру glTexImage2D с координатами ?, в примерах у людей видел только реализаций через ассоциативный массив по имени текстуры.</content:encoded>
			<category>C/C++</category>
			<dc:creator>current_user</dc:creator>
			<guid>https://gcup.ru/forum/62-103070-1</guid>
		</item>
		<item>
			<title>Помогите понять в чем проблема! С#. Unity. Android.</title>
			<link>https://gcup.ru/forum/62-102842-1</link>
			<pubDate>Fri, 30 Oct 2020 10:16:02 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Не могу понять как работает условие Input.touchCount &amp;amp;gt;0&lt;br /&gt;Автор темы: raketa420&lt;br /&gt;Автор последнего сообщения: GWÁLÐ&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Доброго времени суток, я новичок в Unity. Изучаю C#. У меня проблема. Делаю небольшой тестовый проект на Android. В нем по нажатию на экран должен, скажем, спавниться куб.&lt;br /&gt;Условия у меня такое:&lt;br /&gt;if(Input.GetMouseButtonDown(0) || Input.touchCount &gt;0)&lt;br /&gt;То есть при нажатии левой кнопки мыши оно срабатывает и когда количество пальцев на экране больше ноля.&lt;br /&gt;На компе в Unity все работает корректно, при нажатии спавниться 1 куб. Но после компиляции и тестировании на andorid-устройстве, при касании экрана спавниться много кубов, пока я не отпущу палец, на каждый кадр по кубу, успеть отпустить палец за 1 кадр нереально. &lt;br /&gt;Подскажите глупцу, как правильно прописать условие касания на экран, чтоб срабатывало 1 раз до того как отпускаешь палец.</content:encoded>
			<category>C/C++</category>
			<dc:creator>raketa420</dc:creator>
			<guid>https://gcup.ru/forum/62-102842-1</guid>
		</item>
		<item>
			<title>Проблема с khrplatform.h при подключении GLAD</title>
			<link>https://gcup.ru/forum/62-102749-1</link>
			<pubDate>Sat, 25 Jul 2020 18:46:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Со всем разобрался, можно закрыть тему&lt;br /&gt;Автор темы: minecrafter2&lt;br /&gt;Автор последнего сообщения: minecrafter2&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>При подключении GLAD компилятор не может найти khrplatform.h. Пробовал указывать с помощью -L, -I, -l но как-то не помогло.&lt;br /&gt;&lt;br /&gt;Ошибка:&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/-1EUtGPvb8.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;&lt;br /&gt;Исходный код:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;#include &quot;glad/glad.h&quot;&lt;br /&gt;#include &quot;glfw3.h&quot;&lt;br /&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;&lt;br /&gt;int main(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Структура проекта:&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/ZkweeQwvbL.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (25 Июля 2020, 19:51)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Я уже разобрался. Я -I не правильно использовал.&lt;br /&gt;&lt;br /&gt;Но возник другой вопрос: компиляция программы проходит успешно (SFML) но при запуске исполняемого файла появляется ошибка libgcc_s_seh-1.dll не обнаружен.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (25 Июля 2020, 21:46)&lt;br /&gt;---------------------------------------------&lt;br /&gt;С этим тоже разобрался</content:encoded>
			<category>C/C++</category>
			<dc:creator>minecrafter2</dc:creator>
			<guid>https://gcup.ru/forum/62-102749-1</guid>
		</item>
		<item>
			<title>Хакерский движок для линукс</title>
			<link>https://gcup.ru/forum/62-101697-1</link>
			<pubDate>Mon, 20 Jul 2020 20:03:00 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: LesiaAngel&lt;br /&gt;Количество ответов: 47</description>
			<content:encoded>Делаю хакерскую игру. Теперь можно добавлять элементы влёгкую. Также создавать хосты, соединять их. И всё это пингуется и трассируется. Я даже подумал что если реализую всё что хотел, то может получиться неплохой себе framework или движок. В котором для своей игры можно создать нужное количество компьютеров, создать сколько надо провайдеров интернет. Объединить всё в сеть. Сделать задания. Когда я абстрагировал всё, стало теперь легче добавлять всё. Вот пример как я это делаю.&lt;br /&gt;&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler8eQ8Vv&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler8eQ8Vv&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8eQ8Vv&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8eQ8Vv&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8eQ8Vv&apos;)).val(&apos;Закрыть спойлер&apos;);$(&apos;#uSpoiler8eQ8Vv&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8eQ8Vv&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8eQ8Vv&apos;)).val(&apos;Открыть спойлер&apos;);$(&apos;#uSpoiler8eQ8Vv&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;Открыть спойлер&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/b1NmRIfMiE.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;&lt;!--/ust--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;&lt;br /&gt;Всё становится очень просто. Так можно несколько частей выпустить если фантазии хватит. Пока же надо над одной версией потрудиться. А вы как думаете, стоит ли открыть код в будущем, чтобы каждый мог создать свои уровни?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101697-1</guid>
		</item>
		<item>
			<title>Отрисовка карты SFML</title>
			<link>https://gcup.ru/forum/62-102481-1</link>
			<pubDate>Wed, 03 Jun 2020 21:29:06 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Подкиньте идей для отрисовки карты&lt;br /&gt;Автор темы: veeroteen&lt;br /&gt;Автор последнего сообщения: FlyOfFly&lt;br /&gt;Количество ответов: 23</description>
			<content:encoded>Подкиньте идей для отрисовки карты, просто зашел в тупик, через tinyxml прорисовка тайликов заканчивается безбожной потерей фпс, вплоть до 4 фпс за зону 20 на 40 по 32px, на самом деле проблема не очень то частая, потому что все это можно бы ло бы залить в строку, и доставать напрямую(так очевидно быстрей), но в таком случае есть конкретные ограничения на размер карты которые меня не очень устраивают, но есть еще идея разделить окно на 2 слоя, а именно самой карты, поверх которой отрисовывать персонажа с прозрачным фоном, но вот вопрос как на эти слои разделить, что бы они отрисовывались отдельно друг от друга &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/shock.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;shock&quot; /&gt; &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/shock.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;shock&quot; /&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>veeroteen</dc:creator>
			<guid>https://gcup.ru/forum/62-102481-1</guid>
		</item>
		<item>
			<title>Как переписать код с C++ на С(си)?</title>
			<link>https://gcup.ru/forum/62-102545-1</link>
			<pubDate>Thu, 14 May 2020 10:47:20 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: tduk&lt;br /&gt;Автор последнего сообщения: tduk&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>Приветствую всех форумчан. Программирую недавно и многого не знаю(&lt;br /&gt;Прошу помогите(подскажите как) переписать этот код с С++ на С?(В С не особо разбираюсь, а времени мало осталось)&lt;br /&gt;Задача: подсчитать кол-во уникальных слов в тексте.&lt;br /&gt;Что делает код: Считывает все слова из файла test.txt и заносит в массив startArr. После этого переносит все уникальные слова в массив res(т е остаются слова без повторений и дубликатов, в единичном числе). В конце выводится количество уникальных слов в тексте(размер массива res)&lt;br /&gt;Прокомментировал, надеюсь все будет понятно&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;#include &lt;vector&gt;&lt;br /&gt;#include &lt;algorithm&gt;&lt;br /&gt;#include &lt;list&gt;&lt;br /&gt;#include &lt;fstream&gt;&lt;br /&gt;#include &lt;sstream&gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main(&amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setlocale(LC_ALL, &quot;ru&quot;&amp;#41;;//подключаем русский&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list &lt;string&gt; startArr;//исходные данные&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list &lt;string&gt; res;//конечный лист&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//чтение файла&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string str;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ifstream In(&quot;D:&amp;#92;&amp;#92;test.txt&quot;&amp;#41;; //открываем файл&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!In&amp;#41; cout &lt;&lt; &quot;Error&quot;; //если не закрыли, то даем ошибку&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (In.is_open(&amp;#41;&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (In&gt;&gt;str&amp;#41; { // пока есть слова заносим их в массив&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startArr.emplace_back(str&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;In.close(&amp;#41;;//закрываем&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startArr.unique(&amp;#41;;//убираем дубликаты&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (auto it = startArr.begin(&amp;#41;; it != startArr.end(&amp;#41;; it++&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;auto fr = find(res.begin(&amp;#41;, res.end(&amp;#41;, *it&amp;#41;;//проверяем, есть ли уже этот элемент в новом листе&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (fr==res.end(&amp;#41;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res.emplace_back(*it&amp;#41;;//если нет, то добавляем&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int size = res.size(&amp;#41;;//записываем размер массива res&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &lt;&lt; &quot;Уникальных слов: &quot; &lt;&lt; size &lt;&lt; endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (auto it = res.begin(&amp;#41;; it != res.end(&amp;#41;; it++&amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &lt;&lt; (*it&amp;#41; &lt;&lt; &quot; &quot;;//вывод для отладки&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>tduk</dc:creator>
			<guid>https://gcup.ru/forum/62-102545-1</guid>
		</item>
		<item>
			<title>Как производить внутриигровые покупки в android?</title>
			<link>https://gcup.ru/forum/62-102248-1</link>
			<pubDate>Wed, 13 May 2020 23:53:38 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: kalumb&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>У меня например будет игра на sdl2 + c++. Есть что нибудь такое, чтобы можно было продавать в игре что нибудь? Как это делается? Есть ли для c++ библиотеки?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102248-1</guid>
		</item>
		<item>
			<title>Чтение и Запись в Цикле</title>
			<link>https://gcup.ru/forum/62-102428-1</link>
			<pubDate>Sun, 05 Apr 2020 14:16:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: проблема при записи и чтении в цикле (1 раз выполняется)&lt;br /&gt;Автор темы: SSS22&lt;br /&gt;Автор последнего сообщения: SSS22&lt;br /&gt;Количество ответов: 14</description>
			<content:encoded>Форумчане приветствую!&lt;br /&gt;Недавно изучаю С# поэтому возникают различные вопросы и проблемы. Прошу не ругать сильно!&lt;br /&gt;&lt;br /&gt;Задача следующая:&lt;br /&gt;Необходимо за указанный промежуток времени (начало, конец) обрабатывать архивную переменную (запись в архиве рандом примерно +-1 каждую сек).&lt;br /&gt;В цикле необходимо: с архивной переменной считать значение за указанную метку времени. (Вход)&lt;br /&gt;Записать значение и текущую метку времени в другую архивную переменную. (Out_param1)&lt;br /&gt;&lt;br /&gt;PS за промежуток времени (начало, конец) и с периодичностью (1 мин) может быть считаны и записаны данные.&lt;br /&gt;&lt;br /&gt;В настоящее время имеется проблема что считывается и записывается только 1 раз. с первой меткой времени.&lt;br /&gt;&lt;br /&gt;Начальные данные:&lt;br /&gt;Начало - 04/04/2020 19.00.00&lt;br /&gt;Конец- 04/04/2020 19.10.00&lt;br /&gt;Время - 04/04/2020 19.06.00 - время указанное пользователем&lt;br /&gt;&lt;br /&gt;Результат после работы скрипта:&lt;br /&gt;&lt;br /&gt;Tim2=время конечное 04/04/2020 19.07.00 (как-будто не увеличивает больше 1 раза) должно быть 04/04/2020 19.08.00&lt;br /&gt;Out_param1=29.752 (значение с архива соответствует времени 19.06.00).....а метка времени тоже 04/04/2020 19.06.00&lt;br /&gt;&lt;br /&gt;___В переменной Out_param1 в идеале должны быть значения за 19.06.00 / 19.07.00 /19.08.00 если указал 3 раза в цикле&lt;br /&gt;&lt;br /&gt;Прилагаю ниже код скрипта:&lt;br /&gt;&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;using System;&lt;br /&gt;using MasterSCADA.Script.FB;&lt;br /&gt;using MasterSCADA.Hlp;&lt;br /&gt;using FB;&lt;br /&gt;using System.Linq;&lt;br /&gt;&lt;br /&gt;public partial class ФБ : ScriptBase&lt;br /&gt;{&lt;br /&gt;bool? M=false; //для переднего фронта&lt;br /&gt;public override void Execute(&amp;#41;&lt;br /&gt;{&lt;br /&gt;if (Найти==true &amp;&amp; M==false &amp;&amp; Начало.HasValue &amp;&amp; Конец.HasValue &amp;&amp; Конец&gt;Начало&amp;#41; // условие начала // &quot;Найти&quot; (bool флаг начала&amp;#41;&lt;br /&gt;{&lt;br /&gt;var elem = HostFB.InputGroup.GetPin(&quot;Вход&quot;&amp;#41;.TreePinHlp; //elem архивная переменная &quot;Вход&quot;&lt;br /&gt;var k=elem.DataArchiveItem; // переменная архива k&lt;br /&gt;DateTime TIMER1=Время.Value; // время указанное&lt;br /&gt;DateTime TIMER2=TIMER1.ToUniversalTime(&amp;#41;;&lt;br /&gt;DateTime EndTime=Конец.Value.ToUniversalTime(&amp;#41;; //время конец&lt;br /&gt;DateTime StartTime=Начало.Value.ToUniversalTime(&amp;#41;; //время начало&lt;br /&gt;var mas=k.Read(StartTime, EndTime, false&amp;#41;; // чтение массива mas из переменной архива&lt;br /&gt;double? Val=null;&lt;br /&gt;DateTime? TimeStamp=null;&lt;br /&gt;&lt;br /&gt;for (int i=1;i&lt;=3;i++&amp;#41; //цикл n раза 1 цикл метка времени и поиск +1минута&lt;br /&gt;{&lt;br /&gt;TIMER2=TIMER2; // текущее заданное время&lt;br /&gt;foreach (var element in mas&amp;#41; // перебор и поиск в архиве&lt;br /&gt;{&lt;br /&gt;if (element.Time&gt;TIMER2.AddSeconds(-1&amp;#41; &amp;&amp; element.Time&lt;TIMER2.AddSeconds(1&amp;#41;&amp;#41; //условие +/- 1секунда в указанное время&lt;br /&gt;{&lt;br /&gt;Val=Convert.ToDouble(element.Value&amp;#41;; // конвертируем в переменную&lt;br /&gt;SetValue(&quot;Out_param1&quot;,new PinValue(Val,TIMER2&amp;#41;&amp;#41;; //запись в архивную переменную Out_param1&lt;br /&gt;TIMER2=TIMER2.AddMinutes(1&amp;#41;; // в конце цикла прибавляем 1 минуту к условию&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Tim2=TIMER2; // так для проверки конечного времени&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;M=Найти;&lt;br /&gt;}&lt;br /&gt;}&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Подскажите где может быть ошибка пожалуйста или что добавить!? &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/ILoveGcUp.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;lovegcup&quot; /&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>SSS22</dc:creator>
			<guid>https://gcup.ru/forum/62-102428-1</guid>
		</item>
		<item>
			<title>Импульс + if условие С#</title>
			<link>https://gcup.ru/forum/62-102289-1</link>
			<pubDate>Sat, 29 Feb 2020 22:52:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Импульс  + время&lt;br /&gt;Автор темы: SSS22&lt;br /&gt;Автор последнего сообщения: Minskii&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Доброе время суток!&lt;br /&gt;Недавно стал изучать С# поэтому прошу вашей помощи в одном вопросе:&lt;br /&gt;Задача: нужно чтобы скрипт по входному импульсу (логический вход) считывал входную переменную DATA_now (?DateTime).&lt;br /&gt;а также по определенным условиям прибавлял к данной переменной 15 минут, после каждого нового входного импульса.&lt;br /&gt;Все это организовано в коде С#. Частично работает. Время считывается и прибавляет 15 минут.....НО....делает это автоматически, а не по условию! (то есть.... что я if употребляю в коде или нет...одинаково )&lt;br /&gt;&lt;br /&gt;Вот код: (не ругайте строго))) &lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using MasterSCADA.Script.FB;&lt;br /&gt;using MasterSCADA.Hlp;&lt;br /&gt;using FB;&lt;br /&gt;using FB.FBAttributes;&lt;br /&gt;using System.Linq;&lt;br /&gt;&lt;br /&gt;[FBRetain]&lt;br /&gt;public partial class ФБ : ScriptBase&lt;br /&gt;{&lt;br /&gt; public override void Execute()&lt;br /&gt; {&lt;br /&gt; &lt;br /&gt; bool SIGNAL_DATA1 = Convert.ToBoolean(SIGNAL_DATA); // ?bool&lt;br /&gt; bool Error1 = Convert.ToBoolean(Error); // ?bool&lt;br /&gt; DateTime Dtime_now = Convert.ToDateTime(DATA_NOW); // ?DateTime&lt;br /&gt; DateTime Time4 = new DateTime();&lt;br /&gt; DateTime Time2 = new DateTime(); &lt;br /&gt; DateTime Time3 = new DateTime(); &lt;br /&gt; DateTime Time1 = new DateTime();&lt;br /&gt; &lt;br /&gt; if ((SIGNAL_DATA1==true) &amp; (Error1==false));&lt;br /&gt; { &lt;br /&gt; DateTime Timenow1 = Dtime_now;&lt;br /&gt; Time1 = Timenow1.AddDays(+1);&lt;br /&gt; Time2 = Timenow1.AddDays(+2);&lt;br /&gt; Time3 = Time1;&lt;br /&gt; Time4 = Timenow1;&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; if (SIGNAL_DATA1 &amp; !Error1); //импульс запуска и отсутсвие ошибки&lt;br /&gt; {&lt;br /&gt; if ((Time3 &gt;= Time1) &amp;(Time3&lt;=Time2)); //проверка промежутка времени&lt;br /&gt; {&lt;br /&gt; &lt;b&gt;Time3= Time3.AddMinutes(+15); // /прибавим 15 минут тут все работает но прибавляет только 1 раз &lt;br /&gt; WORK_OUT=true; //готовность &lt;/b&gt;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; Dtime11=Time1; // ?DateTime выходная переменная времени&lt;br /&gt; Dtime12=Time2; // ?DateTime выходная переменная времени&lt;br /&gt; Dtime13=Time3; // ?DateTime выходная переменная времени &lt;br /&gt; Dtime14=Time4; // ?DateTime выходная переменная времени&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>SSS22</dc:creator>
			<guid>https://gcup.ru/forum/62-102289-1</guid>
		</item>
		<item>
			<title>Время ToUniversalTime</title>
			<link>https://gcup.ru/forum/62-102267-1</link>
			<pubDate>Sun, 02 Feb 2020 15:46:53 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Преобразование времени&lt;br /&gt;Автор темы: SSS22&lt;br /&gt;Автор последнего сообщения: SSS22&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>День добрый!&lt;br /&gt;Подскажите начинающему в изучении C#:&lt;br /&gt;&lt;br /&gt;имеется Параметр с временем (только чтение) (DATE_in) его нужно переопределить методом ToUniversalTime и записать в параметр DATA_out (только запись)&lt;br /&gt;&lt;br /&gt;Код написал а компилятор ругается...подскажите пожалуйста что не так делаю?&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using MasterSCADA.Script.FB;&lt;br /&gt;using MasterSCADA.Hlp;&lt;br /&gt;using FB;&lt;br /&gt;using FB.FBAttributes;&lt;br /&gt;using System.Linq;&lt;br /&gt;&lt;br /&gt;[FBRetain]&lt;br /&gt;public partial class ФБ : ScriptBase&lt;br /&gt;{&lt;br /&gt; public override void Execute()&lt;br /&gt; {&lt;br /&gt; &lt;b&gt; DateTime Time1 = new DateTime(DATE_in);&lt;br /&gt;	DATA_out = Time1.ToUniversalTime();&lt;/b&gt;&lt;br /&gt; }&lt;br /&gt;}</content:encoded>
			<category>C/C++</category>
			<dc:creator>SSS22</dc:creator>
			<guid>https://gcup.ru/forum/62-102267-1</guid>
		</item>
		<item>
			<title>Подготовка проекта на sdl2 для запуска на android</title>
			<link>https://gcup.ru/forum/62-102254-1</link>
			<pubDate>Sun, 19 Jan 2020 11:16:38 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>На хабре опубликовал статью как подготовить проект для запуска на android. Если интересует, читайте.&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://habr.com/ru/post/484526/&quot; title=&quot;https://habr.com/ru/post/484526/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102254-1</guid>
		</item>
		<item>
			<title>Можно ли рекламу как то вставить в игру на c++ для android?</title>
			<link>https://gcup.ru/forum/62-102247-1</link>
			<pubDate>Sat, 18 Jan 2020 11:18:48 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: slagusev&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Наконец-то разобрался с sdl2, чтобы можно было отобразить и текст и спрайты и 3d модельки. Теперь хотелось бы на всякий случай узнать, есть ли способ добавить какой нибудь admod или что-то другое на c++? Я как бы не хочу добавлять рекламу в игру, но хотелось бы знать, есть ли возможность.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102247-1</guid>
		</item>
		<item>
			<title>какой то глюк в opengl чтоли.</title>
			<link>https://gcup.ru/forum/62-102222-1</link>
			<pubDate>Fri, 17 Jan 2020 08:53:39 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 31</description>
			<content:encoded>никто не знает что это такое. линии где кнопки. они того же цвета что и шрифт. но код вроде нормальный.&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/b1uyHRRQDS.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102222-1</guid>
		</item>
		<item>
			<title>Одновременное выполнение 100 программ в игре.</title>
			<link>https://gcup.ru/forum/62-102241-1</link>
			<pubDate>Wed, 15 Jan 2020 12:27:21 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: drcrack&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Как думаете, нормально ли будет играть в такую игру, где в фоне запущено 100 программ. Объясню ситуацию по подробней. Например я создал язык ассемблера для игры и компилятор в типа машинный код. Также создал подобие языка си, чтобы можно было перевести в ассемблер, а потом и в машинный код. В игре например я захватываю компьютеры и вешаю на них свой софт, который в игре написал. Это будет например программы, которые создают цепочки серверов. Также например есть боты, которые свои команды выполняют. Например в каждой программе будет доступно за раз выполнить например 8 ассемблерных команд, и потом переходит к следующей программе в массиве. Если сделать так как я думаю, а это отдельные компьютеры со своими программами, то например чтобы сами программы выполнялись в отдельном потоке. И вот я не знаю как посчитать, будет ли нормально игра работать при объемных данных? Хотя если сделать это в отдельном потоке, то проблем думаю не будет, были бы проблемы с работой в том же потоке, где происходит цикл рисования графики. Но ещё этот объем работы очень сложный как я думаю, но хочу понять, правильно ли так делать? Для меня как бы логично делать так, что каждый компьютер это отдельный объект ( класс ), а не как то по другому. Хотя если делать по другому, то возможно можно сократить нагрузку на процессор или на память. Ещё сложность в реализации программы в игре, надо скорее всего ещё какой то буфер, в который будет сохраняться какие то сетевые данные, ведь в отдельном потоке эта программа пока выполниться со своим кодом. Блин, абсурд. Это не годиться. Чтобы была правильная работа отдельных компьютеров, нужно каждый компьютер запускать в отдельном потоке, и там уже чтобы выполнялись программы, которые работают на этом компьютере. А работу потоков уже возложить на ос своего компьютера ( настоящего ). Но это тоже проблема, много потоков это вроде плохо. Так что наверное надо рассматривать другой вариант какой-то.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102241-1</guid>
		</item>
		<item>
			<title>реализация издателя и подписчика на си.</title>
			<link>https://gcup.ru/forum/62-102237-1</link>
			<pubDate>Mon, 13 Jan 2020 09:46:51 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: drcrack&lt;br /&gt;Количество ответов: 22</description>
			<content:encoded>Написал я в общем это. На си мне как то больше нравиться как выглядит код, чем в ооп. Вдруг кому нужно, пожалуйста, скачивайте &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/publisher&quot; title=&quot;https://github.com/xverizex/publisher&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;publisher&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;этот код работает глобально. то есть если есть один издатель TRADE, то он будет во всей программе. Можно из любой части получить данные от издателя. Имеется несколько функций упрощающее управление издателем. Можно например отписаться подписчику с определенными данными, а можно отписаться подписчику со всеми данными. То есть подписчик это функция. с помощью функции init_publisher можно указать к какому подписчику отправлять события. Можно подписаться одному и тому же подписчику с разными данными. Есть функция, которая убирает сразу подписчика со всеми данными. А есть функция, которая убирает всех подписчиков.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102237-1</guid>
		</item>
		<item>
			<title>Как пропустить первую строку</title>
			<link>https://gcup.ru/forum/62-102232-1</link>
			<pubDate>Sat, 11 Jan 2020 06:14:10 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Считывание данных CSV файл&lt;br /&gt;Автор темы: SSS22&lt;br /&gt;Автор последнего сообщения: SSS22&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Добрый день форумчане! Недавно начал изучать C# требуется по ходу работы. &lt;br /&gt;Задача следующая:&lt;br /&gt;Считать данные из CSV файла (строки). Данные записать в архивную базу данных с меткой времени. Код который написал - рабочий. В архиве все данные вижу корректно, но есть проблемы корректировки:&lt;br /&gt;Первая строка файла содержит некорректные данные - не числовые, типа заголовок файла. В коде нужно как-то пропускать первую строку в цикле((( в этом собственно проблема. Думаю использовать &quot;continue&quot; если строка == первой, но надо какимто образом считывать номер строки...((?или както подругому.&lt;br /&gt;&lt;br /&gt;Вот данные CSV файла&lt;br /&gt;1 строка: &lt;b&gt;DATATIME;Parametr1;Parametr2;Parametr3&lt;/b&gt; //вот эту строку пропускать нужно в цикле&lt;br /&gt;2 строка: &lt;b&gt;08.01.2020 6:15:00;-1;103561;-1,7&lt;/b&gt;&lt;br /&gt;3 строка: &lt;b&gt;08.01.2020 6:30:00;-1;58664;-1,1&lt;/b&gt;&lt;br /&gt;4 строка: &lt;b&gt;08.01.2020 6:45:00;-4;25622;-1,9&lt;/b&gt;&lt;br /&gt;....&lt;br /&gt;96 строка: &lt;b&gt;08.01.2020 19:45:00;-9;2562;-0,9&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Вот сам код С#&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using MasterSCADA.Script.FB;&lt;br /&gt;using MasterSCADA.Hlp;&lt;br /&gt;using FB;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.IO;&lt;br /&gt;&lt;br /&gt;public partial class ФБ : ScriptBase&lt;br /&gt;{&lt;br /&gt;bool? M=false;&lt;br /&gt; public override void Execute()&lt;br /&gt; { &lt;br /&gt; if (Считать==true &amp;&amp; M==false &amp;&amp; Файл!=string.Empty &amp;&amp; Файл!=null)&lt;br /&gt; { &lt;br /&gt; Ошибка=false;&lt;br /&gt; try&lt;br /&gt; &lt;u&gt; { &lt;br /&gt;	 using(var file = new StreamReader(Файл)) //открытие файла для чтения&lt;br /&gt;	 {&lt;br /&gt;	 var line=file.ReadLine();&lt;br /&gt;&lt;br /&gt;	 while (line!=null)&lt;br /&gt;	 {	 &lt;br /&gt;	 &lt;br /&gt;	 String[] substrings = line.Split(&apos;;&apos;); //разбор строки на составляющие				&lt;br /&gt;			var Time = DateTime.Parse(substrings[0]); // преобразую время&lt;br /&gt;			for (int i=1;i&lt;=3;i++) // считаю столбцы&lt;br /&gt;			{&lt;br /&gt;				SetValue(&quot;Параметр&quot;+i.ToString(), new PinValue(Double.Parse(substrings[i]),Time)); // запись параметров&lt;br /&gt;			}&lt;br /&gt;			&lt;br /&gt;			line=file.ReadLine();//считывание строк из файла&lt;br /&gt;	 } &lt;br /&gt;	 &lt;br /&gt;		}&lt;br /&gt;	}		&lt;/u&gt;&lt;br /&gt;	catch (Exception ex)&lt;br /&gt;		{&lt;br /&gt;			Ошибка=true;&lt;br /&gt;			ReportError (ex.Message); //вызов метода для записи сообщения в лог &lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	M=Считать;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; void ReportError (string Error) //данный метод записывает сообщения в лог &lt;br /&gt; {&lt;br /&gt; 	 var ScriptName=HostFB.TreeItemHlp.ToString(); //имя скрипта&lt;br /&gt;	 HostFB.TreeItemHlp.Project.ErrorTracer.ReportError(string.Format(&quot;{0}: {1}&quot;,ScriptName,Error));&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;подчеркнутым выделил где сам код считывания происходит.&lt;br /&gt; HELP PLEASE!) как пропустить первую строку данных файла</content:encoded>
			<category>C/C++</category>
			<dc:creator>SSS22</dc:creator>
			<guid>https://gcup.ru/forum/62-102232-1</guid>
		</item>
		<item>
			<title>Знаете какие нибудь сервисы работающие на websocket?</title>
			<link>https://gcup.ru/forum/62-102236-1</link>
			<pubDate>Fri, 10 Jan 2020 22:52:31 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Написал программу для работы с websocket. &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/websocket_client&quot; title=&quot;https://github.com/xverizex/websocket_client&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;websocket_client&lt;/a&gt;. Хочу где нибудь применить. Пробывал на twitch, но там какие то заморочки с oauth2. то есть там есть возможность получить oauth с помощью управления на сайте. но чтобы подписаться на события в websocket, надо запросить права для oauth2, а это у меня не получается. да и вообще у меня проблема пока что с oauth2. он отсылает на другую страницу для получения токена. я не пойму как получить его. недавно подумал что надо загрузить эту страницу, но там возможно нужен js. короче проблема. &lt;br /&gt;&lt;br /&gt;может вы знаете какие нибудь сервисы, которые используют websocket? я бы у себя на компьютере сделал бы информационные сервисы всякие, которые получают инфу из инета.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102236-1</guid>
		</item>
		<item>
			<title>Изменяется переменная</title>
			<link>https://gcup.ru/forum/62-102175-1</link>
			<pubDate>Tue, 17 Dec 2019 09:49:27 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: kalumb&lt;br /&gt;Автор последнего сообщения: kalumb&lt;br /&gt;Количество ответов: 12</description>
			<content:encoded>Всем привет. У меня что-то странное происходит с переменной. Она изменяется в зависимости он вызова других функций.&lt;br /&gt;Код на картинке. Ситуация такая. Функция LoadFile возвращает буфер с прочитанным файлом и записывает в переменную BufferSize его размер. Но потом почему-то эта переменная меняется сама собой. Если в коде оставить функцию printf в зелёной рамке, то переменная изменяется (Вывод 1), а если убрать - значение остаётся прежним (Вывод 2). Размер файла равен 2608 байт. Из-за чего такое может происходить?&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/-ysfmEVGUB.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;Видео:&lt;br /&gt;https://yadi.sk/i/MJ1FmIkDHowwLw</content:encoded>
			<category>C/C++</category>
			<dc:creator>kalumb</dc:creator>
			<guid>https://gcup.ru/forum/62-102175-1</guid>
		</item>
		<item>
			<title>twitch бот</title>
			<link>https://gcup.ru/forum/62-102159-1</link>
			<pubDate>Tue, 03 Dec 2019 23:13:53 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Бот выводит сообщения в область уведомления.&lt;br /&gt;&lt;br /&gt;Чтобы узнать о всех командах, наберите @bot help. @bot - имя бота, то есть ваш ник.&lt;br /&gt;&lt;br /&gt;Можно управлять плеером audacious или rhythmbox.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;next - переключает плеер на следующую песню&lt;br /&gt;&lt;li&gt;prev - переключает плеер на предыдущую песню&lt;br /&gt;&lt;li&gt;track - показывает информацию о песне, такую как альбом и название трека.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Возможность узнавать если появился новый фолловер.&lt;br /&gt;&lt;br /&gt;Также есть звуковые уведомления о новых сообщениях и фолловерах.&lt;br /&gt;&lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/twitch-bot&quot; title=&quot;https://github.com/xverizex/twitch-bot&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;twitch-bot&lt;/a&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102159-1</guid>
		</item>
		<item>
			<title>Почему не стоит использовать пиратское по</title>
			<link>https://gcup.ru/forum/62-102150-1</link>
			<pubDate>Sun, 24 Nov 2019 12:00:37 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Я разрабатываю программу дизассемблер для линукс системы. Позже может буду делать тоже самое, чтобы обрабатывать и windows файлы программы. Пока я разрабатывал это по у меня появилась идея. Она заключается в том, что хотелось бы иметь такую возможность, чтобы можно было добавить столько кода в бинарный файл, сколько хочется. Я в дизассемблере сделал такую функцию, с помощью которой можно добавить код даже в середину исполняемого файла. Я уверен что идея не новая и таким функционалом пользуются и вирусы, но они вроде затирают байты и ищут свободные данные между секциями или в секциях - я не знаю. С помощью моей программы можно встроить нужный код в любую функцию программы. Моя программа создаст новый исполняемый файл, в котором будет реализован нужный функционал. Такое могут сделать и злоумышленники и раздавать взломанное по на торрентах. Лучше бы вам не пользоваться по на торрентах.&lt;br /&gt;И вот не много о результате работы.&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr02FP1IyORU&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://youtu.be/NMVLEQFTVXU&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr02FP1IyORU&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102150-1</guid>
		</item>
		<item>
			<title>масштабирование изображения</title>
			<link>https://gcup.ru/forum/62-102134-1</link>
			<pubDate>Thu, 14 Nov 2019 17:30:39 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 5</description>
			<content:encoded>Вот есть изображение, например 1920x1080. В программе по просмотру картинок можно масштабировать изображение, то есть растягивать окно и изображение пропорционально будет таким же, только увеличенным или уменьшенным. Мне надо чтобы изображение 1920x1080 помещалось в окне программы. Мне приходит на ум только такой способ. Убрать каждый второй пиксель, но тогда изображение сразу в два раза уменьшиться. Тогда уменьшить каждый 10 или 20. Как лучше сделать?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102134-1</guid>
		</item>
		<item>
			<title>cymix - система обнаружения вторжений</title>
			<link>https://gcup.ru/forum/62-102027-1</link>
			<pubDate>Sun, 06 Oct 2019 17:32:40 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 29</description>
			<content:encoded>&lt;b&gt;Платформа&lt;/b&gt; - линукс. Потом может быть windows. Но так windows у меня не установлен, то будет не скоро.&lt;br /&gt;&lt;b&gt;Язык программирования&lt;/b&gt; - си.&lt;br /&gt;&lt;b&gt;IDE&lt;/b&gt; - текстовый редактор vim.&lt;br /&gt;&lt;b&gt;Описание&lt;/b&gt; - cymix система обнаружения вторжений. Использует свои правила и правила snort. Пока что делаю парсер своих правил, тех, которых нет в snort. Единственное что пока реализовал, так это одно правило, которое пишет что меня пингуют. Занялся этим проектом, когда меня не устроили существующие системы обнаружения вторжений. &lt;br /&gt;&lt;b&gt;Как это работает&lt;/b&gt; - в линукс есть функции очереди, когда поступает пакет в компьютер, этот пакет отправляется в очередь. На другом конце работает четыре потока, каждый ждёт пакета из очереди. Кто первый получил, тот и обрабатывает. Затем пакет сравнивается с правилами и если есть совпадения, то отправляется в журналирование. Одним из журналирования есть unix сокет. Это сделано для локального пользования. С помощью unix сокета моя другая программа получает доступ к журналу и оповещает меня, когда появляются новые сообщения. Подробности на видео.&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr06NY1Ifagv&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://youtu.be/sU2Nk5r4RUI&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr06NY1Ifagv&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-102027-1</guid>
		</item>
		<item>
			<title>Разработка игр для sega и nintendo snes</title>
			<link>https://gcup.ru/forum/62-101834-1</link>
			<pubDate>Mon, 08 Jul 2019 18:34:20 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Можете накидать сюда ссылок на сайты, где можно понять как разрабатывать под эти консоли? А то я найти не могу, хотя раньше как то находил по ссылкам. Хочу посмотреть всю сложность разработки для этих архитектур. Для nes я нашёл, там применяется компилятор cc65. Но nes это деньди и программирование чисто на ассемблере, но я бы мог на ассемблере сделать, но я не знаю ассемблера 65000.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101834-1</guid>
		</item>
		<item>
			<title>Как вам такая архитектура?</title>
			<link>https://gcup.ru/forum/62-101814-1</link>
			<pubDate>Tue, 02 Jul 2019 15:59:59 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: Xakep&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Я недавно создал такую программульку, которая подключает библиотеки, столько, сколько есть. &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/m&quot; title=&quot;https://github.com/xverizex/m&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;, здесь создаются программа и две библиотеки.&lt;br /&gt;Например есть сишный движок. Код программиста выполнен в формате библиотеки, то есть есть функция init и функция рендер, в которые нужно вписать логику. При компиляции это будет компилироваться в библиотеки. Если проект будет очень большим, то библиотек будет ну очень много. Вроде бы упрощает кодирование, но когда много библиотек это нормально?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101814-1</guid>
		</item>
		<item>
			<title>паттерны проектирования</title>
			<link>https://gcup.ru/forum/62-101799-1</link>
			<pubDate>Sat, 29 Jun 2019 16:27:53 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>Пробывал на youtube смотреть уроки на эту тематику, но они казались какими-то сложными. Было много кода, хотя суть всего в нескольких строчках кода. В этом цикле видео я хотел объяснить простым языком и кодом про паттерны. Примеры будут максимальны просты, чтобы понять что такое определённый паттерн. Даже в книге уходит на это несколько страниц, приводятся примеры по языку smaltalk. В общем смотрим.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Абстрактная фабрика&lt;/b&gt;&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr28a91HGcZq&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://youtu.be/liP08kO7xuQ&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr28a91HGcZq&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;&lt;br /&gt;&lt;br /&gt;Паттерн строитель, я даже не много поржал от того как я объясняю этот паттерн. Ему я приминения не нашёл, очень сложно для такого паттерна мне что-то придумать для примера.&lt;br /&gt;&lt;b&gt;Строитель&lt;/b&gt;&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr38a91HGcZq&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://youtu.be/RfoTBmkiRPU&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr38a91HGcZq&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101799-1</guid>
		</item>
		<item>
			<title>Уроки по программированию по си и c++</title>
			<link>https://gcup.ru/forum/62-101755-1</link>
			<pubDate>Tue, 18 Jun 2019 07:26:56 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: Xakep&lt;br /&gt;Количество ответов: 8</description>
			<content:encoded>Решил сделать уроки по си и c++. Правда не знаю, получится ли делать годный материал. Первое видео какое записал на эту тему, не разработка программы, а&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Приведение типов в си.&lt;/b&gt;&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr12LO1HATWu&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://www.youtube.com/watch?v=vep9XYh63Co&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr12LO1HATWu&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;&lt;br /&gt;&lt;br /&gt;То есть я даже и не думал раньше что так можно.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;((struct b*&amp;#41; &amp;a&amp;#41;-&gt;b&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;То есть код такое будет работать.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;struct a {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char a&amp;#91;4];&lt;br /&gt;}a;&lt;br /&gt;struct b {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int b;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *m = &amp;a.a&amp;#91;0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( int i = 0; i &lt; 4; i++, m++ &amp;#41; *m = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a.a&amp;#91;0] = 3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;%d&amp;#92;n&quot;, ((struct b*&amp;#41; &amp;a&amp;#41;-&gt;b &amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Я это заметил случайно, когда додумался до этого, типа а что если так попробывать. И действительно получилось, и тогда моё понимание к си приблизилось. Даже не знаю, хорошо ли я объясняю. Нужен ли такой материал?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12 Июня 2019, 06:29)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Об этом я узнал где-то год или два назад. Хотя писал на си уже где-то два года, но редко.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12 Июня 2019, 06:30)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Видео получилось почему то низкого качества, щас посмотрю.&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12 Июня 2019, 06:50)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Офигеть, я так объясняю хахаха. Ещё такая речь. Блин. &lt;img rel=&quot;usm&quot; src=&quot;https://gcup.ru/SML/prof.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;prof&quot; /&gt;&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12 Июня 2019, 07:34)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Не нафиг надо. Видео получилось ужасным.&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12 Июня 2019, 07:34)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Врядли я буду обучать программированию.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101755-1</guid>
		</item>
		<item>
			<title>Массив содержащий компоненты игрового обьекта</title>
			<link>https://gcup.ru/forum/62-101767-1</link>
			<pubDate>Sat, 15 Jun 2019 10:19:17 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: zaicev9797&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 9</description>
			<content:encoded>как можно сделать чтоб внутри класса GameObject можно было хранить массив или список наследников класса Component (например TransfromComponent : public Component или Collider : public Component и т.д.)&lt;br /&gt;У Component есть метод Update. соответственно я хочу чтоб GameObject который содержит набор экземпляров разных наследников Component мог вызывать их Update.&lt;br /&gt;Как такое можно сделать?&lt;br /&gt;&lt;br /&gt;В данный момент, если я придумываю новый компонент который можно было бы прицепить к GameObject мне приходится прописывать однотипные методы которые отличаются только типом компонента, а так же отдельные поля для хранения каждого типа компонента.&lt;br /&gt;&lt;br /&gt;Короче выглядит это вот так, и что то мне подсказывает, что это лютая дичь&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;class GameObject{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransformComponent *transform;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Body *body;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Collider *collider;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DrawComponent *draw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Spacecraft *spacecraft;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ParticleController *particleController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ParticleSystem *particleSystem;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BackgroundController *backgroundController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FireController *fireController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button *button;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextWindow *textWindow;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FireLight *fireLightController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WeaponLight *weaponLightController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExplosionLight *explosionLightController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Asteroid *asteroidController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExplosionController *explosionController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PlayerController *playerController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EngineParticleController *engineParticleController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bullet *bulletController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Weapon *weaponController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AsteroidSpawner *asteroidSpawnerController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool destroy = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String tag;&lt;br /&gt;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GameObject(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;transform = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;body = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;collider = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;draw = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;spacecraft = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;particleSystem = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;particleController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;backgroundController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;fireController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;button = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;textWindow = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;fireLightController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;asteroidController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;explosionController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;playerController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;bulletController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;weaponController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;weaponLightController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;explosionLightController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;asteroidSpawnerController = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetTransform(TransformComponent *_trnasform&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;transform = _trnasform;&lt;br /&gt;&amp;nbsp;&amp;nbsp;tag = transform-&gt;GetTag(&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetDrawComponent(DrawComponent *_draw&amp;#41;{draw = _draw;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetCollider(Collider *_collider&amp;#41;{collider = _collider;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetBody(Body *_body&amp;#41;{body = _body;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetSpacecraft(Spacecraft *_spacecraft&amp;#41;{spacecraft = _spacecraft;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetParticleController(ParticleController *_particleController&amp;#41;{particleController = _particleController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetBackgroundController(BackgroundController *_backgroundController&amp;#41;{backgroundController = _backgroundController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetButtonController(Button *_button&amp;#41;{button = _button;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetParticleSystem(ParticleSystem *_particleSystem&amp;#41;{particleSystem = _particleSystem;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetFireController(FireController *_fireController&amp;#41;{fireController = _fireController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetTextWindowController(TextWindow *_textWindow&amp;#41;{textWindow = _textWindow;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetFireLitghtController(FireLight *_fireLightController&amp;#41;{fireLightController = _fireLightController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetAteroidController(Asteroid *_asteriodController&amp;#41;{asteroidController = _asteriodController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetExplosionController(ExplosionController *_explosionController&amp;#41;{explosionController = _explosionController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetPlayerController(PlayerController *_playerController&amp;#41;{playerController = _playerController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetEngineParticleController(EngineParticleController *_engineParticleController&amp;#41;{engineParticleController = _engineParticleController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetBulletController(Bullet *_bulletController&amp;#41;{bulletController = _bulletController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetWeaponController(Weapon *_weapon&amp;#41; { weaponController = _weapon; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetWeaponLightController(WeaponLight *_weaponLight&amp;#41; { weaponLightController = _weaponLight; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetExplosionLightController(ExplosionLight *_explosionLight&amp;#41; { explosionLightController = _explosionLight; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void SetAsteroidSpawnerController(AsteroidSpawner *_asteroidSpawner&amp;#41; { asteroidSpawnerController = _asteroidSpawner; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransformComponent* GetTransformComponent(&amp;#41;{return transform;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DrawComponent* GetDrawComonent(&amp;#41;{return draw;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Collider* GetCollider(&amp;#41; {return collider;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Body *GetBody(&amp;#41;{return body;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Spacecraft *GetSpacecraft(&amp;#41;{return spacecraft;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ParticleController *GetParticleController(&amp;#41;{return particleController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BackgroundController *GetBackgroundController(&amp;#41;{return backgroundController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button *GetButton(&amp;#41; { return button; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextWindow *GetTextWindow(&amp;#41;{return textWindow;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FireLight *GetFireLightController(&amp;#41;{return fireLightController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Asteroid *GetAsteroidController(&amp;#41;{return asteroidController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExplosionController *GetExplosionController(&amp;#41;{return explosionController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PlayerController *GetPlayerController(&amp;#41;{return playerController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EngineParticleController *GetEngineParticleController(&amp;#41;{return engineParticleController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool GetDestroy(&amp;#41;{return destroy;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ParticleSystem *GetParticleSystem(&amp;#41;{return particleSystem;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FireController *GetFireController(&amp;#41;{return fireController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bullet *GetBulletController(&amp;#41;{return bulletController;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Weapon *GetWeaponController(&amp;#41; { return weaponController; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WeaponLight *GetWeaponLightController(&amp;#41; { return weaponLightController; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExplosionLight *GetExplosionLightController(&amp;#41; { return explosionLightController; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AsteroidSpawner *GetAsteroidSpwnerController(&amp;#41; { return asteroidSpawnerController; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String *GetTag(&amp;#41;{return &amp;tag;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Update(RenderWindow &amp;window&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;//printf(&quot;&amp;#92;n&amp;#92;n%s &amp;#92;n&quot;, transform-&gt;GetName(&amp;#41;.toAnsiString(&amp;#41;.c_str(&amp;#41;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (backgroundController != NULL&amp;#41;{backgroundController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (textWindow != NULL&amp;#41;{textWindow-&gt;Update(window&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (button != NULL&amp;#41;{button-&gt;Update(window&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (body != NULL&amp;#41;{body-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (spacecraft != NULL&amp;#41;{spacecraft-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (particleSystem != NULL&amp;#41;{particleSystem-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (particleController != NULL&amp;#41;{particleController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (fireController != NULL&amp;#41;{fireController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (fireLightController != NULL&amp;#41;{fireLightController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (asteroidController != NULL&amp;#41;{asteroidController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (explosionController != NULL&amp;#41;{explosionController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (playerController != NULL&amp;#41;{playerController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (engineParticleController != NULL&amp;#41;{engineParticleController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (bulletController != NULL&amp;#41;{bulletController-&gt;Update(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (weaponController != NULL&amp;#41; { weaponController-&gt;Update(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (weaponLightController != NULL&amp;#41; { weaponLightController-&gt;Update(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (explosionLightController != NULL&amp;#41; { explosionLightController-&gt;Update(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (asteroidSpawnerController != NULL&amp;#41; { asteroidSpawnerController-&gt;Update(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (draw != NULL&amp;#41;{draw-&gt;Draw(window&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void Destroy(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (transform != NULL&amp;#41;{transform-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (collider != NULL&amp;#41;{collider-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (draw != NULL&amp;#41;{draw-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (body != NULL&amp;#41;{body-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (spacecraft != NULL&amp;#41;{spacecraft-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (particleController != NULL&amp;#41;{particleController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (particleSystem != NULL&amp;#41;{particleSystem-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (backgroundController != NULL&amp;#41; { backgroundController-&gt;Destroy(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (button != NULL&amp;#41;{button-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (textWindow != NULL&amp;#41;{textWindow-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (fireController != NULL&amp;#41;{fireController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (asteroidController != NULL&amp;#41;{asteroidController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (fireLightController != NULL&amp;#41;{fireLightController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (explosionController != NULL&amp;#41;{explosionController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (playerController != NULL&amp;#41;{playerController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (engineParticleController != NULL&amp;#41;{engineParticleController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (bulletController != NULL&amp;#41;{bulletController-&gt;Destroy(&amp;#41;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (weaponController != NULL&amp;#41; { weaponController-&gt;Destroy(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (weaponLightController != NULL&amp;#41; { weaponLightController-&gt;Destroy(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (explosionLightController != NULL&amp;#41; { explosionLightController-&gt;Destroy(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (asteroidSpawnerController != NULL&amp;#41; { asteroidSpawnerController-&gt;Destroy(&amp;#41;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;destroy = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;};&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>zaicev9797</dc:creator>
			<guid>https://gcup.ru/forum/62-101767-1</guid>
		</item>
		<item>
			<title>как написать большую игру на C++ &amp; SFML (не 3d)</title>
			<link>https://gcup.ru/forum/62-101764-1</link>
			<pubDate>Sat, 15 Jun 2019 10:09:49 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: zaicev9797&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>вопрос скорее больше архитектуры касается нежели самого языка программирования.&lt;br /&gt;Хочется спроектировать самостоятльно рабочую систему, дабы понимать хотябы приблизительно, как это работает у больших дядек типа unity или unreal&lt;br /&gt;В идеале конечно хотелось бы иметь систему на подобии unity когда у нас есть некоторый обьект gameObject а к нему можно добавлять всевозможные компоненты типа физики, коллайдеров, логики искуственного интелекта или контроллера для игрока. А потом комбинируя различные компоненнты наделять игровые обьекты необходимыми свойствами и способностями. Как такое можно реализовать на C++, что почитать?&lt;br /&gt;предположим что для мультимедийных функций я буду использовать sfml. Она легко подключается и в принципе проста в использовании, обеспечивает вывод графики и звука.</content:encoded>
			<category>C/C++</category>
			<dc:creator>zaicev9797</dc:creator>
			<guid>https://gcup.ru/forum/62-101764-1</guid>
		</item>
		<item>
			<title>Сортировка снимков photomoves</title>
			<link>https://gcup.ru/forum/62-101746-1</link>
			<pubDate>Thu, 06 Jun 2019 12:40:29 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Изучаю gtkmm библиотку. Раньше писал на си в gtk, но на c++ в gtkmm легче создать свой виджет. Да и может на с++ будет лучше что я учусь. Пока код может и не очень хорошо написан, да и можно было бы лучше написать. Но я пока многого скорее всего не знаю. Но с опытом я разберусь как лучше писать. Её можно адаптировать на windows, но я не знаю windows api. Также можно было её делать на qt. Но на qt в лучшем случае надо приобретать коммерческую лицензию. Вот например spriter сделан на qt. Их версия для текущей версии линукс уже не подходит и не работает. Всё из-за того что используются старые библиотеки. Я не знаю, может у тех библиотек лицензия не позволяет или фиг знает из-за чего так, но эти либы не находятся в каталоге с самим приложением. Теперь о программе.&lt;br /&gt;Что я сделал. Например у вас есть каталог с фотками. Эти фотки надо рассортировать по разным каталогам. Какие ваши действия. 1. Посмотреть фото. 2. Закрыть программу просмотра изображения. 3. Скопировать файл. 4. Вставить в другой каталог.&lt;br /&gt;В моей же программе можно задать каталог где хранятся фотки. Также надо задать каталоги, в которые надо будет копировать снимки. Чтобы посмотреть как же она работает и если вы вдруг чего то не поняли, посмотрите это видео.&lt;br /&gt;&lt;!--BBvideo--&gt;&lt;span id=&quot;scr460N1Hyzuu&quot;&gt;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;_uVideoPlayer({&apos;url&apos;:&apos;https://youtu.be/42r2EVxP78I&apos;,&apos;width&apos;:&apos;640&apos;,&apos;height&apos;:&apos;360&apos;},&apos;scr460N1Hyzuu&apos;);&lt;/script&gt;&lt;!--/BBvideo--&gt;&lt;br /&gt;Да и кстати, а эта программа нужна кому нибудь? Мне например нужна.&lt;br /&gt;&lt;br /&gt;Ссылка на github &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/go?https://github.com/xverizex/photomoves&quot; title=&quot;https://github.com/xverizex/photomoves&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/xverizex/photomoves&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Но такого рода программу можно было сделать и на qt. Так как других сторонних либ она не требует.&lt;br /&gt;Наверное надо было какие то файлы добавить в git ignore, но я не знаю какие.&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (05 Июня 2019, 21:59)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Толи я чего то не знаю, то ли что, но с c++ gtkmm библиотекой я испытывал проблемы. Если в сишной gtk можно в сигнал передать параметры, то в c++ gtkmm нельзя. Или я чего то не знаю. Скорее всего на c++ лучше делать на qt фрейморке. А если си, то gtk. Мне нравиться gtk ещё из-за того что можно титульный виджет заменить на headbar. Но в сишной gtk сложно свой виджет создавать. В gtkmm c++ можно наследоваться от widget класса и переопределить несколько методов, в том числе и метод перерисовки. В сишной же gtk, надо весь виджет с нуля писать, на что затрачивается много времени. Да и надо знать как правильно делать сишный виджет. В общем проблема.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101746-1</guid>
		</item>
		<item>
			<title>Делаю hex редактор</title>
			<link>https://gcup.ru/forum/62-101739-1</link>
			<pubDate>Mon, 03 Jun 2019 10:45:50 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 10</description>
			<content:encoded>Не знаю как в других редакторах, но вроде бы такого нет в других редакторах, то что есть в моем. )&lt;br /&gt;Я тут осваиваю qt фреймворк. И решил написать hex редактор для начала. Вот хотел бы узнать у вас. Нужен ли вообще такой софт? Редактор ещё не доработан. Но то что я хотел наконецто сделал. Весь день потратил на это.&lt;br /&gt;Чем отличается мой редактор от остальных. Это тем что он подсвечивает секции. Пока что я сделал чтобы подсвечивала две секции, это секции .text и .data. Цвета ещё будут меняться. Но это удобно использовать. Можно в редакторе сразу определить где начинается код. Вот черновой вариант. Я хотел сделать ещё чтобы объединялись команды ассемблерные в одну группу, чтобы видно было по hex где заканчивается команда и начинается новая. Но это я не знаю буду делать или нет. Потому что надо все команды ассемблера в программу вписать. И пока работает только с 64 битными программами и только в линукс. Но так как это qt, то может я осилю и windows.&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/Zymk9XWghV.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/ZyHeqXben4.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101739-1</guid>
		</item>
		<item>
			<title>Вопрос-Ответ (C++)</title>
			<link>https://gcup.ru/forum/62-17210-1</link>
			<pubDate>Wed, 24 Apr 2019 14:59:42 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Вопросы по С++ задаём здесь.&lt;br /&gt;Автор темы: Kornival&lt;br /&gt;Автор последнего сообщения: SandERfills&lt;br /&gt;Количество ответов: 1550</description>
			<content:encoded>Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь. &lt;br /&gt;&lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;Saitei: все вопросы по С задаём в теме &lt;a class=&quot;link&quot; href=&quot;http://gcup.ru/forum/62-44061-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Вопрос-Ответ (С)&lt;/a&gt;. Благодарю за внимание!&lt;/span&gt;</content:encoded>
			<category>C/C++</category>
			<dc:creator>Kornival</dc:creator>
			<guid>https://gcup.ru/forum/62-17210-1</guid>
		</item>
		<item>
			<title>работа с freetype2 freetype</title>
			<link>https://gcup.ru/forum/62-101517-1</link>
			<pubDate>Fri, 15 Mar 2019 12:44:02 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Всем привет. Я достиг успеха в работе с freetype2. Пусть может быть эта тема будет кому нибудь полезна. Может кто в интернете незнает как работать с freetype, зайдет в эту тему и скачает текст класса.&lt;br /&gt;Итак, вот чего я достиг. С помощью моего кода текст можно выводить в несколько строк. Эти строки будут включены в одну текстуру. Класс ведь правда? Одной текстурой рисовать несколько строк. А то я видел какие то примеры, вообще не понятные. Там как то странно нужно рисовать строки. В общем, вот что получается.&lt;br /&gt;&lt;img src=&quot;http://s1.uploadpics.ru/images/-yR2cIGMPV.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;Вот как вызвать функцию.&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wchar_t * text = L&quot;привет gcup, я пишу в линуксе с sdl2 и opengl.&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;Мне нравиться когда у меня начинает что-то получаться.&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;А также я считаю что эта тема может пригодиться многим, кто хочет работать с freetype2.&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;И так, код будет снизу!&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-&gt;init ( text, 21, 1, 4, 4, 0, 0, 0 &amp;#41;;&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Функция init принимает параметры.&lt;br /&gt;&amp;#92;1 текст&lt;br /&gt;&amp;#92;2 размер шрифта&lt;br /&gt;&amp;#92;3 расстояние между шрифтами по горизонтали в пикселях&lt;br /&gt;&amp;#92;3 расстояние между шрифтами по вертикали в пикселях&lt;br /&gt;&amp;#92;3 размер пробела в пикселях&lt;br /&gt;&amp;#92;4 красный цвет&lt;br /&gt;&amp;#92;5 зеленый цвет&lt;br /&gt;&amp;#92;6 синий цвет&lt;br /&gt;&lt;br /&gt;Вот код font.hpp&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#ifndef H_FONT_H&lt;br /&gt;#define H_FONT_H&lt;br /&gt;#include &lt;stdint.h&gt;&lt;br /&gt;#include &lt;ft2build.h&gt;&lt;br /&gt;#include &lt;string&gt;&lt;br /&gt;#include &lt;vector&gt;&lt;br /&gt;#include &lt;SDL2/SDL_opengl.h&gt;&lt;br /&gt;#include &lt;SDL2/SDL_opengles2.h&gt;&lt;br /&gt;#include &quot;gl_mat.hpp&quot;&lt;br /&gt;#include &quot;global.hpp&quot;&lt;br /&gt;#include &lt;wchar.h&gt;&lt;br /&gt;#include FT_FREETYPE_H&lt;br /&gt;#include FT_GLYPH_H&lt;br /&gt;&lt;br /&gt;class Font {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font ( &amp;#41; { }&lt;br /&gt;&amp;nbsp;&amp;nbsp;Font ( const char *ttf_file &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void setPos ( int x, int y &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void init ( wchar_t *text, int fontSize, int align, int valign, int space, uint8_t r, uint8_t g, uint8_t b &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void setSize ( int w, int h &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;void draw ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private:&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Face face = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;float *texture;&lt;br /&gt;&amp;nbsp;&amp;nbsp;float *vertices;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int sampler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;GLuint textureid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;int max_draw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;float ortho&amp;#91;4]&amp;#91;4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;float translate&amp;#91;4]&amp;#91;4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;float result&amp;#91;4]&amp;#91;4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned int program;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Library ft_library;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Face ttf;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;#endif&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Вот код font.cpp&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#include &quot;font.hpp&quot;&lt;br /&gt;&lt;br /&gt;Font::Font ( const char *ttf_file &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::clearMatrix4x4 ( &amp;ortho&amp;#91;0] &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::clearMatrix4x4 ( &amp;translate&amp;#91;0] &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::clearMatrix4x4 ( &amp;result&amp;#91;0] &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;program = global.programs&amp;#91;&quot;sprite&quot;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int width = global.width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int height = global.height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::ortho ( &amp;ortho&amp;#91;0], 0.0f, width, 0.0f, height, 0.0f, 1.0f &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setPos ( 0, 0 &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_Init_FreeType( &amp;ft_library &amp;#41;;&lt;br /&gt;&lt;br /&gt;#ifdef __ANDROID__&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_NewFace ( ft_library, ttf_file, 0, &amp;face &amp;#41;;&lt;br /&gt;#else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *path = (char *&amp;#41; new char&amp;#91;255];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf ( path, &quot;assets/%s&quot;, ttf_file &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_New_Face ( ft_library, path, 0, &amp;face &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;free ( path &amp;#41;;&lt;br /&gt;#endif&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Font::init ( wchar_t *es, int fontSize, int align, int vert, int space, uint8_t r, uint8_t g, uint8_t b &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_Set_Pixel_Sizes ( face, 0, fontSize &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_Glyph glyph;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int w = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int h = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int maxh = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int toprow = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int len = wcslen ( es &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( int i = 0; i &lt; len; i++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;wchar_t charcode = es&amp;#91;i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Load_Char ( face, charcode, FT_LOAD_RENDER &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_UInt glyph_index = FT_Get_Char_Index ( face, charcode &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Load_Glyph ( face, glyph_index, FT_LOAD_DEFAULT &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Render_Glyph ( face-&gt;glyph, FT_RENDER_MODE_NORMAL &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Get_Glyph ( face-&gt;glyph, &amp;glyph &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Glyph_To_Bitmap ( &amp;glyph, FT_RENDER_MODE_NORMAL, 0, 1 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph&amp;#41; glyph;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Bitmap bitmap = bitmap_glyph-&gt;bitmap;&lt;br /&gt;&amp;nbsp;&amp;nbsp;w += bitmap.width;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int resize = bitmap.rows - bitmap_glyph-&gt;top;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;h = bitmap.rows + resize;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( toprow &lt; bitmap.rows &amp;#41; toprow = bitmap.rows;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( maxh &lt; bitmap.rows + bitmap_glyph-&gt;top &amp;#41; maxh = bitmap.rows + bitmap_glyph-&gt;top;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( charcode == &apos; &apos; &amp;#41; w += space;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( charcode == &apos;&amp;#92;n&apos; &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;h += vert + maxh;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_Done_Glyph ( glyph &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;w += align;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Done_Glyph ( glyph &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t im&amp;#91;h]&amp;#91;w];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset ( &amp;im&amp;#91;0]&amp;#91;0], 0, w * h * sizeof ( uint8_t &amp;#41; &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int ih = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int iw = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int posy = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int topy = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int maxwidth = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( int i = 0; i &lt; len; i++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;wchar_t charcode = es&amp;#91;i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Load_Char ( face, charcode, FT_LOAD_RENDER &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_UInt glyph_index = FT_Get_Char_Index ( face, charcode &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Load_Glyph ( face, glyph_index, FT_LOAD_DEFAULT &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Render_Glyph ( face-&gt;glyph, FT_RENDER_MODE_NORMAL &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Get_Glyph ( face-&gt;glyph, &amp;glyph &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Glyph_To_Bitmap ( &amp;glyph, FT_RENDER_MODE_NORMAL, 0, 1 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph&amp;#41; glyph;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Bitmap bitmap = bitmap_glyph-&gt;bitmap;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;posy = bitmap_glyph-&gt;top;&lt;br /&gt;&amp;nbsp;&amp;nbsp;posy = bitmap.rows - posy;&lt;br /&gt;&amp;nbsp;&amp;nbsp;topy = toprow - bitmap.rows;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( charcode == &apos;&amp;#92;n&apos; &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ih += maxh;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;iw = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FT_Done_Glyph ( glyph &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;for ( unsigned int y = 0, i = 0; y &lt; bitmap.rows; y++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( unsigned int x = 0; x &lt; bitmap.width; x++, i++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;im &amp;#91; ih + posy + y + topy ] &amp;#91; iw + x ] = bitmap.buffer&amp;#91;i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;iw += bitmap.width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;iw += align;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( maxwidth &lt; iw &amp;#41; maxwidth = iw;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( charcode == &apos; &apos; &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;iw += space;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FT_Done_Glyph ( glyph &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iw = maxwidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width = iw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height = h;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned int size = width * height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t *image_data = new uint8_t &amp;#91; size * 4 ];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;memset ( image_data, 255, size * 4 * sizeof ( uint8_t &amp;#41; &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( unsigned int i = 0, y = 0; i &lt; size; y++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;for ( int x = 0; x &lt; width; x++, i++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_data&amp;#91; 4 * i + 3] = im &amp;#91; y ]&amp;#91; x ];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_data&amp;#91; 4 * i + 0] = r;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_data&amp;#91; 4 * i + 1] = g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;image_data&amp;#91; 4 * i + 2] = b;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGenTextures ( 1, &amp;textureid &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindTexture ( GL_TEXTURE_2D, textureid &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glTexImage2D ( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setSize ( width, height &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;#91;] image_data;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;void Font::setSize ( int w, int h &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices = new float &amp;#91; 12 ];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;0] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;1] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;2] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;3] = h;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;4] = w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;5] = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;6] = w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;7] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;8] = w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;9] = h;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;10] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices&amp;#91;11] = h;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture = new float &amp;#91; 12 ];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;0] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;1] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;2] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;3] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;4] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;5] = 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;6] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;7] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;8] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;9] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;10] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;texture&amp;#91;11] = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Font::setPos ( int x, int y &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this-&gt;x = x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this-&gt;y = y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::translate ( &amp;translate&amp;#91;0], x, y, 0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glm::sumMatrix ( &amp;result&amp;#91;0], &amp;translate&amp;#91;0], &amp;ortho&amp;#91;0] &amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Font::draw ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUseProgram ( program &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sampler = glGetUniformLocation ( program, &quot;s_texture&quot; &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glActiveTexture ( GL_TEXTURE0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindTexture ( GL_TEXTURE_2D, textureid &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUniform1i ( sampler, 0 &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLint projection_location = glGetUniformLocation ( program, &quot;transform&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUniformMatrix4fv ( projection_location, 1, GL_FALSE, &amp;result&amp;#91;0]&amp;#91;0] &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glEnableVertexAttribArray ( 0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glEnableVertexAttribArray ( 1 &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glVertexAttribPointer ( 0, 2, GL_FLOAT, GL_FALSE, 0, vertices &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glVertexAttribPointer ( 1, 2, GL_FLOAT, GL_FALSE, 0, texture &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glDrawArrays ( GL_TRIANGLES, 0, 12 &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glDisableVertexAttribArray ( 0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glDisableVertexAttribArray ( 1 &amp;#41;;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Вот код шейдера&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const char *vshader =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;#version 300 es&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;layout(location = 0&amp;#41; in vec2 position;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;layout(location = 1&amp;#41; in vec2 texCoord;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;uniform mat4 transform;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;out vec2 v_texCoord;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;void main ( &amp;#41;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;{&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot; gl_Position = transform * vec4 ( position, 0.0, 1.0 &amp;#41;;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot; v_texCoord = texCoord;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;}&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const char *fshader =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;#version 300 es&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;precision mediump float;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;in vec2 v_texCoord;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;layout(location = 0&amp;#41; out vec4 outColor;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;uniform sampler2D s_texture;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;void main ( &amp;#41;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;{&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot; outColor = texture ( s_texture, v_texCoord &amp;#41;;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;}&quot;;&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;В пространстве glm содержаться функции по перемещению текста. Если надо, могу выложить.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавлено&lt;/b&gt; (27 Февраля 2019, 07:54)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Как блин сделать чтобы из поисковиков на эту тему тоже была ссылка?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101517-1</guid>
		</item>
		<item>
			<title>тайловый редактор ipsi</title>
			<link>https://gcup.ru/forum/62-101560-1</link>
			<pubDate>Fri, 15 Mar 2019 12:42:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 4</description>
			<content:encoded>&lt;img src=&quot;http://s1.uploadpics.ru/images/by1PvV40v4.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br /&gt;Решил продолжить совершенствование в построении интерфейсов в opengl. Представляю вам ipsi ( тайловый редактор ). Пока что мало чего реализовал. Реализовано только разбиение изображения на куски, что видно справа. И простенький файловый менеджер, в котором можно перемещаться по каталогам и выбирать изображения. Экспорт будет в массив. То есть экспортировать можно будет в разные массивы. Например сначала будет реализован экспорт в c/c++ массив. Также будет выбор сверху вниз или снизу вверх размещать элементы в массиве. Так как я пользуюсь линуксом, а windows почти не пользуюсь и незнаю как для windows делать программы, я делаю эту программу для линукс. Я сначала пользовался tiled, но экспорт в xml файл данных меня не устраивает, я хочу чтобы можно было не выбирать какой размер тайлов будет изначально, а рисовать по желанию сколько захочешь. И экспортировать это сразу в массив. Если у меня все получиться, то будет хорошо. Есть проблема, пишу программу без мотивации и у меня нет желания ее делать. Пишу программу все равно. Иногда настроение появляется писать программу, но не всегда. Приходиться преодолевать нежелание. По завершению первой версии код будет выложен на github.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101560-1</guid>
		</item>
		<item>
			<title>Программирование для windows</title>
			<link>https://gcup.ru/forum/62-101567-1</link>
			<pubDate>Fri, 15 Mar 2019 12:40:16 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Раз уж так сложилось что windows пользуется много народу то хотел бы попросить вас здесь написать. Я хочу попробывать написать игру на sdl2 + opengl opengles2. В sdl2 есть заголовки SDL_opengl.h SDL_opengles2.h, думаю их хватит чтобы для windows все заработало. Но мне нужно подключить сами библиотеки. Как это сделать с помощью mingw?&lt;br /&gt;Будет одна sdl2 библиотека, которая будет в каталоге с проектом, а еще надо подключить opengl opengles freetype2, такое есть у windows? Помогите с этим.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101567-1</guid>
		</item>
		<item>
			<title>свой графический движок</title>
			<link>https://gcup.ru/forum/62-101543-1</link>
			<pubDate>Sat, 09 Mar 2019 12:25:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 12</description>
			<content:encoded>Делал я в общем &lt;a class=&quot;link&quot; href=&quot;https://gcup.ru/forum/9-101526-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;hackingtoday&lt;/a&gt; игру и потом ее забросил. Щас что подумал раз я смог создать графические виджеты для игры, то я могу создать и для движка любой виджет, который захочу. Для меня проблема создавать свои виджеты с помощью gtk или qt. А так, как в aseprite, сделаю свои элементы. Только из-за того что я еще не делал этот движок думаю будут проблемы с экраном, то есть вставляя элемент его надо сразу ставить туда, куда надо, блин, а может и не будет проблем. Кто что думает о движках полностью на opengl?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101543-1</guid>
		</item>
		<item>
			<title>Где должен быть каталог с данными для android?</title>
			<link>https://gcup.ru/forum/62-101497-1</link>
			<pubDate>Sat, 23 Feb 2019 07:00:57 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Делаю игру для android на sdl2 с opengl es на c++ ( на си неохото, пробую c++, вроде бы удобно ). Пока только небольшую загатовку сделал, чтобы отобразить картинку. Но вот проблема. Я думаю что каталог должен называться assets и находиться в каталоге app. Ну я видел что так называют assets. Так вот. Я запускал в отладчике игру, а она не находила файл data в assets. Где должен находиться каталог с данными и как он должен называться?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-101497-1</guid>
		</item>
		<item>
			<title>Небольшой проект на Qt</title>
			<link>https://gcup.ru/forum/62-101363-1</link>
			<pubDate>Sun, 13 Jan 2019 18:24:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: Оптимизация и направление разработки&lt;br /&gt;Автор темы: noctu&lt;br /&gt;Автор последнего сообщения: GreyGLoomy&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Создал проект(пока шаблон), изучаю qt и никак не пойму как создавать производительные 2D приложения.&lt;br /&gt;Есть конкретные минусы. Помогите избавиться:&lt;br /&gt;1) Когда объектов становится много система начинает тормозить.&lt;br /&gt;2) Есть вырвиглазное соединение 2х объектов сцены и управляемого юнита(через указатель).&lt;br /&gt;исходники на гитхабе https://github.com/noctu13/test</content:encoded>
			<category>C/C++</category>
			<dc:creator>noctu</dc:creator>
			<guid>https://gcup.ru/forum/62-101363-1</guid>
		</item>
		<item>
			<title>opengl выводит черный квадрат</title>
			<link>https://gcup.ru/forum/62-100782-1</link>
			<pubDate>Wed, 12 Dec 2018 18:46:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: afq&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Я уже запарился пробывать разные варианты. Может кто нибудь поможет. Я пытаюсь рисовать с помощью шейдеров, vbo vao с привязкой к буферам, в общем новейшим способом. Вот код, не рисует рисунок, выводит только черный квадрат. Что не так?&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &quot;gl_core_4_3.h&quot;&lt;br /&gt;#include &lt;SDL2/SDL.h&gt;&lt;br /&gt;#include &lt;SDL2/SDL_video.h&gt;&lt;br /&gt;#include &lt;SDL2/SDL_opengl.h&gt;&lt;br /&gt;#include &lt;SDL2/SDL_events.h&gt;&lt;br /&gt;#include &lt;SDL2/SDL_keycode.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;int *vertices;&lt;br /&gt;unsigned char *pixels;&lt;br /&gt;int *ivert;&lt;br /&gt;int *ipixels;&lt;br /&gt;float *fvert;&lt;br /&gt;float *fpixels;&lt;br /&gt;unsigned int max_draw;&lt;br /&gt;int screen_width;&lt;br /&gt;int screen_height;&lt;br /&gt;SDL_Window *window;&lt;br /&gt;int max_pixels;&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;init_image ( long pos &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FILE *fd = fopen ( &quot;data&quot;, &quot;r&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fseek ( fd, pos, SEEK_SET &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fread ( &amp;width, sizeof ( unsigned int &amp;#41;, 1, fd &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fread ( &amp;height, sizeof ( unsigned int &amp;#41;, 1, fd &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fread ( &amp;max_pixels, sizeof ( unsigned int &amp;#41;, 1, fd &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pixels = calloc ( max_pixels, sizeof ( unsigned char &amp;#41; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fpixels = calloc ( max_pixels, sizeof ( float &amp;#41; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ipixels = calloc ( max_pixels, sizeof ( int &amp;#41; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fread ( &amp;pixels&amp;#91;0], sizeof ( unsigned char &amp;#41;, max_pixels, fd &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( int i = 0; i &lt; max_pixels; i++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;float m = pixels&amp;#91;i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;int b = m / 0.01;&lt;br /&gt;&amp;nbsp;&amp;nbsp;float c = b * 0.01;&lt;br /&gt;&amp;nbsp;&amp;nbsp;fpixels &amp;#91; i ] = c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;ipixels &amp;#91; i ] = pixels&amp;#91;i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max_draw = height * width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices = calloc ( max_draw * 2, sizeof ( unsigned int &amp;#41; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fvert = calloc ( max_draw * 2, sizeof ( float &amp;#41; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ivert = calloc ( max_draw * 2, sizeof ( int &amp;#41; &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for ( int y = height - 1, i = 0; y &gt;= 0; y-- &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;for ( int x = 0; x &lt; width; i += 2, x++ &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices &amp;#91; i + 0 ] = x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertices &amp;#91; i + 1 ] = y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fvert &amp;#91; i + 0 ] = x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fvert &amp;#91; i + 1 ] = y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ivert &amp;#91; i + 0 ] = x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ivert &amp;#91; i + 1 ] = y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fclose ( fd &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;#if 1&lt;br /&gt;GLuint program;&lt;br /&gt;&lt;br /&gt;GLuint&lt;br /&gt;load_shader ( GLenum type, const char *shader_src &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint shader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLint compiled;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shader = glCreateShader ( type &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;!&amp;#92;n&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( shader == 0 &amp;#41; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glShaderSource ( shader, 1, &amp;shader_src, NULL &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glCompileShader ( shader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetShaderiv ( shader, GL_COMPILE_STATUS, &amp;compiled &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( !compiled &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;GLint info_len = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;glGetShaderiv ( shader, GL_INFO_LOG_LENGTH, &amp;info_len &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( info_len &gt; 1 &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *info_log = malloc ( sizeof ( char &amp;#41; * info_len &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetShaderInfoLog ( shader, info_len, NULL, info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;shader compile %s &quot;, info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;free ( info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch ( type &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case GL_VERTEX_SHADER:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;vertex shader!&amp;#92;n&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case GL_FRAGMENT_SHADER:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;fragment shader!&amp;#92;n&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;glDeleteShader ( shader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return shader;&lt;br /&gt;}&lt;br /&gt;GLuint&lt;br /&gt;loadProgram ( const char *vshader, const char *fshader &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint vertex_shader, fragment_shader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vertex_shader = load_shader ( GL_VERTEX_SHADER, vshader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fragment_shader = load_shader ( GL_FRAGMENT_SHADER, fshader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint program_object;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;program_object = glCreateProgram ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glAttachShader ( program_object, vertex_shader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glAttachShader ( program_object, fragment_shader &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glLinkProgram ( program_object &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLint linked;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetProgramiv ( program_object, GL_LINK_STATUS, &amp;linked &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( !linked &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;GLint info_len = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;glGetProgramiv ( program_object, GL_INFO_LOG_LENGTH, &amp;info_len &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ( info_len &gt; 1 &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *info_log = malloc ( sizeof ( char &amp;#41; * info_len &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetProgramInfoLog ( program_object, info_len, NULL, info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;%s&amp;#92;n&quot;, info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;free ( info_log &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return -1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return program_object;&lt;br /&gt;}&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;void init_conf ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const char *vShaderstr = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;#version 430&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;layout(location = 0&amp;#41; in vec2 position;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;layout(location = 1&amp;#41; in vec4 color;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;uniform mat4 transform;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;out vec4 v_color;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;void main(&amp;#41;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;{&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot; v_color = vec4 ( color &amp;#41;;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot; gl_Position = transform * vec4 ( position, 0.0, 1.0 &amp;#41;;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;}&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const char *fShaderstr =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;#version 430&amp;#92;n&quot;&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&quot;precision mediump float;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;in vec4 color;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;layout ( location = 0 &amp;#41; out vec4 fragColor;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;void main(&amp;#41;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;{&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot; fragColor = vec4 ( color &amp;#41;;&amp;#92;n&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;}&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;program = loadProgram ( vShaderstr, fShaderstr &amp;#41;;&lt;br /&gt;#if 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glOrtho ( 0.0f, screen_width, 0, screen_height, 0.0f, 1.0f &amp;#41;;&lt;br /&gt;#endif&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void &lt;br /&gt;draw ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLfloat transform&amp;#91;] = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.0f, 0.0f, 0.0f, 0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f, 0.0f, 0.0f, 0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f, 0.0f, -1.0f, 0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-1.0f, -1.0f, 0.0f, 1.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float prj_mat&amp;#91;] =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.0f/screen_width,&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.0f/screen_height,&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-1.0f,&amp;nbsp;&amp;nbsp;0.0f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-1.0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-1.0f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0f,&amp;nbsp;&amp;nbsp;1.0f&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUseProgram ( program &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLint prj_loc = glGetUniformLocation( program, &quot;transform&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUniformMatrix4fv( prj_loc, 1, GL_FALSE, prj_mat &amp;#41;;&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glUniformMatrix4fv( prj_loc, 1, GL_FALSE, transform &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint vbo&amp;#91;2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint vao;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGenBuffers ( 2, &amp;vbo&amp;#91;0] &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint posbufh = vbo&amp;#91;0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLuint colbufh = vbo&amp;#91;1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindBuffer ( GL_ARRAY_BUFFER, posbufh &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBufferData ( GL_ARRAY_BUFFER, max_draw * 2 * sizeof ( float &amp;#41;, fvert, GL_STATIC_DRAW &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindBuffer ( GL_ARRAY_BUFFER, colbufh &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBufferData ( GL_ARRAY_BUFFER, max_pixels * sizeof ( float &amp;#41;, fpixels, GL_STATIC_DRAW &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGenVertexArrays ( 1, &amp;vao &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindVertexArray ( vao &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glEnableVertexAttribArray ( 0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glEnableVertexAttribArray ( 1 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindBuffer ( GL_ARRAY_BUFFER, posbufh &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glVertexAttribPointer ( 0, 2, GL_FLOAT, GL_FALSE, 0, NULL &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindBuffer ( GL_ARRAY_BUFFER, colbufh &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glVertexAttribPointer ( 1, 4, GL_FLOAT, GL_FALSE, 0, NULL &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBindVertexArray ( vao &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glDrawArrays ( GL_POINTS, 0, max_draw &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glFlush ( &amp;#41;;&lt;br /&gt;}&lt;br /&gt;SDL_GLContext glc;&lt;br /&gt;void init_sdl ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Init ( SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_EVENTS &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_DisplayMode mode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_GetCurrentDisplayMode ( 0, &amp;mode &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;screen_width = mode.w - 64;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;screen_height = mode.h - 128;&lt;br /&gt;&lt;br /&gt;#if 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( ogl_LoadFunctions(&amp;#41; == ogl_LOAD_FAILED &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;exit ( EXIT_FAILURE &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window = SDL_CreateWindow ( &quot;ipsi&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;0, 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;screen_width,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;screen_height,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_WINDOW_OPENGL &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#41;;&lt;br /&gt;&lt;br /&gt;#if 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION, 4 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION, 3 &amp;#41;;&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glc = SDL_GL_CreateContext ( window &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_GL_MakeCurrent ( window, glc &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;!!&amp;#92;n&quot;&amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const char *version = glGetString ( GL_VERSION &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;%s&amp;#92;n&quot;, version &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glViewport ( 0, 0, screen_width, screen_height &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;@&amp;#92;n&quot; &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glEnable ( GL_BLEND &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA&amp;#41;;&lt;br /&gt;}&lt;br /&gt;int input_thread ( void *data &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Event event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ( SDL_WaitEvent ( &amp;event &amp;#41; &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;switch ( event.type &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;case SDL_KEYDOWN:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( event.key.keysym.sym == SDLK_q &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit ( EXIT_SUCCESS &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;case SDL_MOUSEBUTTONDOWN:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;case SDL_MOUSEBUTTONUP:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;case SDL_MOUSEMOTION:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;void print_version ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const GLubyte *renderer = glGetString ( GL_RENDERER &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const GLubyte *vendor = glGetString ( GL_VENDOR &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const GLubyte *version = glGetString ( GL_VERSION &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const GLubyte *glslVersion = glGetString ( GL_SHADING_LANGUAGE_VERSION &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GLint major, minor;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetIntegerv ( GL_MAJOR_VERSION, &amp;major &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glGetIntegerv ( GL_MINOR_VERSION, &amp;minor &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;gl renderer %s&amp;#92;n&quot;, renderer &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;gl vender %s&amp;#92;n&quot;, vendor &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;gl version %s %d.%d&amp;#92;n&quot;, version, major, minor &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf ( &quot;gl glsl %s&amp;#92;n&quot;, glslVersion &amp;#41;;&lt;br /&gt;}&lt;br /&gt;int main ( &amp;#41;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init_sdl ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print_version ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init_conf ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init_image ( 0 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_CreateThread ( input_thread, &quot;input_thread&quot;, NULL &amp;#41;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ( 1 &amp;#41; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;glClearColor ( 1, 1, 1, 1 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;glClear ( GL_COLOR_BUFFER_BIT &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;draw ( &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SDL_GL_SwapWindow ( window &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SDL_Delay ( 0.01 &amp;#41;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (03 Августа 2018, 18:55)&lt;br /&gt;---------------------------------------------&lt;br /&gt;Оказывается что имя выходного цвета должно совпадать с именем входным в фрагментном шейдере.</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-100782-1</guid>
		</item>
		<item>
			<title>Как нарисовать спрайт?</title>
			<link>https://gcup.ru/forum/62-100394-1</link>
			<pubDate>Wed, 12 Dec 2018 15:23:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: ugarxxx123&lt;br /&gt;Количество ответов: 7</description>
			<content:encoded>Могу нарисовать 3d модель с помощью glDrawElements. Потому что известны координаты вершин. Но как рисовать рисунок, где мне вершины найти для рисунка? Например 64 на 64 спрайт. Как вершины найти для такого рисунка?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-100394-1</guid>
		</item>
		<item>
			<title>Есть математики?</title>
			<link>https://gcup.ru/forum/62-100409-1</link>
			<pubDate>Wed, 12 Dec 2018 15:12:07 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://gcup.ru/forum/62&quot;&gt;C/C++&lt;/a&gt;&lt;br /&gt;Описание темы: нужно правильно составить выражение&lt;br /&gt;Автор темы: afq&lt;br /&gt;Автор последнего сообщения: ugarxxx123&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>мне нужно перевести число из десятичного в float. Это нужно чтобы цвет составить правильно. Итак.&lt;br /&gt;255 == 1.0f, я думаю что правильно думаю, но как такое может быть, если у int 255 значений, то у float всего 100 значений. Но для цвета я видел что выбирают float значения, а максимальное значение в float это 1.0f.&lt;br /&gt;Так вот, если 255 == 1.0f, то 254 будет равно 0.59f? Или я ошибаюсь и тут никак нельзя и неправильно приводить решение?</content:encoded>
			<category>C/C++</category>
			<dc:creator>afq</dc:creator>
			<guid>https://gcup.ru/forum/62-100409-1</guid>
		</item>
	</channel>
</rss>