<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616835</guid>
        <pubDate>Thu, 06 Aug 2015 05:12:25 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616835</link>
        <description><![CDATA[Pavia: В DirectX 3 матрицы в OpenGL их тоже 3.<br>
В DirectX ViewModel обозвана как World.<br>
Во время программирования можно их всегда считать и независимо изменять. LoadIndenty сбрасывает только одну из них, текущую. Такое разделение нужно для удобства. Перспективная матрица отвечает за камеру. А матрица модели за объекты сцены.<br>
<br>
По поводу рациональности.  Чтобы каждый раз не вычислять, не делать умножения матриц. Во время выполнения графический движок  создаёт общую матрицу, путем перемножения этих 3-х матриц OGL.  <br>
<br>
x/z, y/z Это упрощённо на Z. Если выводить перспективное преобразование, то там будет X/(1+Z). Эту единицу хранят в 4-координате и берегут как зеницу ока.<br>
Потом для Z-буффера Z надо отнормировать Z/(Far- Near). <br>
Поэтому эти две операции объединяют. <br>
Доказательство <a class='tag-url' href='https://docviewer.yandex.ru/?url=ya-disk-public%3A%2F%2FD7MMEZB8T%2FzpkQ9zeWmxxiJK0vyQVE0G1JVxD6xS050%3D&name=glspec14.pdf&page=45&c=55c2f5e543f1' target='_blank'>Формула в OpenGL с делением на w</a><br>
<br>
<br>
 Есть такое определение алгебра - это умение жонглировать формулами. В ком.графике очень много математики и она сложная. Её пробуют всячески упростить.<br>
<br>
К примеру, разделяй и властвуй. Поэтому и делят на две матрицы. Так проще так удобнее. К примеру у вас есть игрушка снайпер. При переключение с обычного вида на прицел изменяется угол fov камеры. Потом матрицы перемножаются. А если бы не было матрицы, то пришлось бы выполнить цикл из методов translate, rotate (перемещение, вращение) Что очень долго бы работало. А так хранят две матрицы и можно быстро переключится.<br>
<br>
Но зачастую такое упрощение математики основано на аналогии, семантики, и интуитивном понятии команд. Но зачастую такое упрощение только вносит недопонимание.<br>
<br>
Некто не хочет работать с формулами дольше 5 минут. Поэтому и пишут сделаем так. Что-бы не разводить объяснения на страницы. Но в принципе такие книги есть.<br>
К примеру:<br>
Математические методы компьютерной графики.<br>
Хотя в моей любимой книжке данный материал уложен максимум в 10 страниц.]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616806</guid>
        <pubDate>Wed, 05 Aug 2015 20:48:53 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616806</link>
        <description><![CDATA[Serafim: Ох, вот это рассказ целый :D И ссылочки очень крутые, я дальше вики пока не добирался, а тут целый Клондайк :good: <br>
<br>
Единственное пока непонятно, стоит ли мне дальше вдаваться в историю (версия 1.1) или стоит браться сразу за более-менее современные 3.2+&#092;ES2.0+ (если не путаю). Там АПИ местами отличается, мне, как ньюблу, приходится иногда недоумевать, например почему задепрекейтили fbo, крутая штука была.<br>
<br>
Пока я возьму за правило обнулять матрицы после каждых преобразований, чтоб ничего никуда не улетало, и иметь ввиду, что под капотом оно постоянно её(их) меняет. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T20:50:47+00:00">05.08.15, 20:50</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616805'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikle &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T20:43:34+00:00">05.08.15, 20:43</time></span><div class='quote '>Таки одна. World, View и Proj перемножаются заранее, по крайней мере так в DirectX, и я очень сомневаюсь, что в OpenGL не так, это просто было бы непрактично.</div></div><br>
я в курсе наличия лишь view и proj, по крайней мере они точно есть. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T20:54:00+00:00">05.08.15, 20:54</time></span></span><br>
Раз уж начали про матрицы, есть ли вариант как-то покидаться <em class='tag-i'>вменяемыми</em> ссылками (или объяснениями) на смысл существования оных, обычно всё описывается лаконичными &quot;а давайте применим, чтоб преобразовать&#092;привести к ...&quot; без подробностей? Чисто теоретически я могу представить зачем они, точнее только одна, а вот отличия и смысл иметь их столько - хоть убей. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T20:57:27+00:00">05.08.15, 20:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616806'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T20:48:53+00:00">05.08.15, 20:48</time></span><div class='quote '> точнее только одна</div></div><br>
Её описал <strong class='tag-b'>Pavia</strong><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616793'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T19:03:42+00:00">05.08.15, 19:03</time></span><div class='quote '>Следующий обработчик выполняет перспективное преобразование. </div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T20:58:32+00:00">05.08.15, 20:58</time></span></span><br>
хотя в теории, помимо преобразования к нужной перспективе - ещё должна быть матрица поворота :rolleyes: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T21:00:03+00:00">05.08.15, 21:00</time></span></span><br>
лучше не буду выдумывать своих сущностей, а подожду опровержений моих теорий от знатоков :blush: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T21:25:35+00:00">05.08.15, 21:25</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616793'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T19:03:42+00:00">05.08.15, 19:03</time></span><div class='quote '>Следующий обработчик выполняет перспективное преобразование. Т.е. умножает на перспективную матрицу и делит первые три координаты на последнюю x/w, y/w, z/w.</div></div><br>
вот тут <a class='tag-url' href='https://en.wikipedia.org/wiki/Graphics_pipeline' target='_blank'>https://en.wikipedia.org/wiki/Graphics_pipeline</a> написано что перспективное преобразование - это деление x/z, y/z для каждой вершины :unsure: что-то я запутался совсем  :crazy:]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616805</guid>
        <pubDate>Wed, 05 Aug 2015 20:43:34 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616805</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616793'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T19:03:42+00:00">05.08.15, 19:03</time></span><div class='quote '>У него есть матрица MODELVIEW и он просто умножает вектора на эту матрицу. Как у рабочего отвертка так у этого обработчика матрица.<br>
<br>
Следующий обработчик выполняет перспективное преобразование. Т.е. умножает на перспективную матрицу и делит первые три координаты на последнюю x/w, y/w, z/w.<br>
<br>
<br>
В конвейере есть много всего. И матрицы присутствуют всегда. Притом не одна.</div></div><br>
Таки одна. World, View и Proj перемножаются заранее, по крайней мере так в DirectX, и я очень сомневаюсь, что в OpenGL не так, это просто было бы непрактично.<br>
Другие матрицы есть, но это уже матрицы, не относящиеся к трансформации геометрии, например, трансформация текстурных координат.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616793</guid>
        <pubDate>Wed, 05 Aug 2015 19:03:42 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616793</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616787'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T18:31:31+00:00">05.08.15, 18:31</time></span><div class='quote '>Ну так вроде я не применял никаких матриц преобразований </div></div><br>
Как работает OpenGL? <br>
 <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">GL11.glMatrixMode(GL11.GL_PROJECTION);</div><div class="code_line">GL11.glLoadIdentity();</div><div class="code_line">//GL11.glOrtho(-10, 10, -10, 10, 10, -10);</div><div class="code_line">GLU.gluPerspective(65.0f, (float)(8.0/6.0), 0.1f, 100.0f);</div><div class="code_line">GL11.glMatrixMode(GL11.GL_MODELVIEW);</div><div class="code_line">GL11.glViewport(0, 0, 800, 600);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">while (!Display.isCloseRequested()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glColor3f(.5f, .5f, 1.0f);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glBegin(GL11.GL_TRIANGLES);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 0.0f, 1.0f, 0.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f(-1.0f,-1.0f, 0.0f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 1.0f,-1.0f, 0.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glEnd();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Display.update();</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Каждая функция преобразуется в команду которая записывается в список.<br>
Дойдя до Display.update(); Этот список отдаётся на исполнения.<br>
<br>
OpenGL представляет собой конвейер. Что такое конвейер?<br>
Это куча роликов на которых находится полета - доска такая.<br>
И она катится по этим роликам от одного конца комнаты к другому. <br>
Вдоль конвеера стоят рабочии. Первый рабочий кладёт половину корпуса на палету.<br>
Второй рабочий кладёт плату.<br>
Третий рабочий вставляет и прикручивает винткии. Скрепляя плату с корпусом.<br>
Четвертый рабочий кладет вторую половинку.<br>
Пятый рабочий соединяет две половинки, винтами.<br>
Шестой упаковывает в корпус.<br>
<br>
Так же и в OpenGL.<br>
Каждый обработчик получает список с командами и выполняет свою операцию.<br>
Первый обработчик разбивает ленту TRIANGLE_STRIP на триугольники.<br>
Второй обработчик выполняет преобразование координат.<br>
У него есть матрица MODELVIEW и он просто умножает вектора на эту матрицу. Как у рабочего отвертка так у этого обработчика матрица.<br>
<br>
Следующий обработчик выполняет перспективное преобразование. Т.е. умножает на перспективную матрицу и делит первые три координаты на последнюю  x/w, y/w, z/w.<br>
<br>
<br>
В конвейере есть много всего. И матрицы присутствуют всегда. Притом не одна. <br>
Про конвейер лучше посмотреть в спецификации 1.3<br>
<a class='tag-url' href='https://www.opengl.org/registry/doc/glspec14.pdf' target='_blank'>https://www.opengl.org/registry/doc/glspec14.pdf</a><br>
<br>
В современных части конвейера заменены шейдерами.<br>
<a class='tag-url' href='https://www.opengl.org/registry/doc/glspec43.core.20120806.pdf' target='_blank'>https://www.opengl.org/registry/doc/glspec4...re.20120806.pdf</a>]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616787</guid>
        <pubDate>Wed, 05 Aug 2015 18:31:31 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616787</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616784'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T18:10:48+00:00">05.08.15, 18:10</time></span><div class='quote '>Забыл сказать что при использование glViewport надо ещё правильно размеры фигур высчитать. Вроде как в 800 раз увеличить.</div></div><br>
Вроде как всё нормально работает:<br>
<span class="b-attach" data-size="367937" data-hits="984" data-attach-id="46109" data-attach-post-id="3616787">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3616787&amp;attach_id=46109' title='Скачать файл' target='_blank'>123123.jpg</a> (, : 984)
		</span><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616784'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T18:10:48+00:00">05.08.15, 18:10</time></span><div class='quote '>Вы отменили GL11.glViewport(0, 0, 800, 600);</div></div><br>
Если указать вьюпорт в два раза меньше, то результат (треугольник) соответственно рисуется в два раза меньше. :-? Ничего вроде не отменяется.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616784'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T18:10:48+00:00">05.08.15, 18:10</time></span><div class='quote '>glLoadIdentity<br>
Присваивает текущей матрице единичную матрицу.</div></div><br>
Ну так вроде я не применял никаких матриц преобразований (по крайней мере явно). Разве что glTranslatef в моём примере, если думать логично, должен накладывать матрицу:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">-6 &nbsp;0 &nbsp;0 0</div><div class="code_line">&nbsp;0 -6 &nbsp;0 0</div><div class="code_line">&nbsp;0 &nbsp;0 -6 0</div><div class="code_line">&nbsp;0 &nbsp;0 &nbsp;0 1</div></ol></div></div></div></div>]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616784</guid>
        <pubDate>Wed, 05 Aug 2015 18:10:48 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616784</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616778'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T17:18:59+00:00">05.08.15, 17:18</time></span><div class='quote '>L11.glLoadIdentity();parseOne(&#39;code_8&#39;,&#39;java&#39;,false) после очистки экрана. </div></div><br>
Вы отменили GL11.glViewport(0, 0, 800, 600);<br>
 <br>
Забыл сказать что при использование glViewport надо ещё правильно размеры фигур высчитать. Вроде как в 800 раз увеличить.<br>
<br>
glLoadIdentity<br>
Присваивает текущей матрице единичную матрицу.<br>
1 0 0 0<br>
0 1 0 0<br>
0 0 1 0<br>
0 0 0 1<br>
<br>
OpenGl не оперирует понятиями объект, сцена. Он оперирует матрицами. И честно математика оторванная от жизни.]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616778</guid>
        <pubDate>Wed, 05 Aug 2015 17:18:59 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616778</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T17:11:09+00:00">05.08.15, 17:11</time></span><div class='quote '>Т.е. Уже ошибка мы не видим треугольник так как он не попадает во внутрь усечённой пирамиды.</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616751'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T15:11:59+00:00">05.08.15, 15:11</time></span><div class='quote '>Думал что это из-за того, что near перспективы 0.1, а треугольник рисуется за границей отсечки (на 0.0). Поигравшись с позицией по Z понял, что нет. </div></div><br>
Как следствие единица тоже не работает (пробовал 10 и 50, сейчас проверил с единицей). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T17:51:05+00:00">05.08.15, 17:51</time></span></span><br>
С транслейтом тоже пусто, что на отрицательные значения, что на положительные. Смена fov тоже ничего не даёт. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T18:00:49+00:00">05.08.15, 18:00</time></span></span><br>
Надо было вызвать <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">GL11.glLoadIdentity();</div></ol></div></div></div></div> после очистки экрана. Пользуясь случаем, хочу спросить, что она делает. Написано что сбрасывает матрицу до дефолтной, чтоб пересчитало. Но что считать тогда дефолтной? До чего оно сбрасывает?  :wacko:]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616774</guid>
        <pubDate>Wed, 05 Aug 2015 17:11:09 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616774</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616751'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T15:11:59+00:00">05.08.15, 15:11</time></span><div class='quote '>GLU.gluPerspective(65.0f, (float)(8.0/6.0), 0.1f, 100.0f);</div></div><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
zNear <br>
<br>
The distance from the viewer to the near clipping plane (always positive).<br>
zFar <br>
<br>
The distance from the viewer to the far clipping plane (always positive).</div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 0.0f, 1.0f, 0.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f(-1.0f,-1.0f, 0.0f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 1.0f,-1.0f, 0.0f);</div></ol></div></div></div></div><br>
Т.е. Уже ошибка мы не видим треугольник так как он не попадает во внутрь усечённой пирамиды.<br>
Надо<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 0.0f, 1.0f, 1.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f(-1.0f,-1.0f, 1.0f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 1.0f,-1.0f, 1.0f);</div></ol></div></div></div></div><br>
<br>
Но лучше просто glTransform(0,0,-Near); Тогда все точки подвинуться. Что принципе будет выражаться перемещения центра камеры. Фокус будет выходить за камеру, находится позади неё.]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616751</guid>
        <pubDate>Wed, 05 Aug 2015 15:11:59 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616751</link>
        <description><![CDATA[Serafim: Так-с, вроде понятно, что ортогональная проекция и перспективная - немного разные, взаимозаменяемые штуки. На картинке, камера есть ни что иное, как <strong class='tag-b'>perspective</strong>, а <strong class='tag-b'>ortho</strong> - ортогональная.<br>
<br>
Есть вот такой пример, более или менее понятный и максимально облегчённый:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">GL11.glMatrixMode(GL11.GL_PROJECTION);</div><div class="code_line">GL11.glLoadIdentity();</div><div class="code_line">//GL11.glOrtho(-10, 10, -10, 10, 10, -10);</div><div class="code_line">GLU.gluPerspective(65.0f, (float)(8.0/6.0), 0.1f, 100.0f);</div><div class="code_line">GL11.glMatrixMode(GL11.GL_MODELVIEW);</div><div class="code_line">GL11.glViewport(0, 0, 800, 600);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">while (!Display.isCloseRequested()) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glColor3f(.5f, .5f, 1.0f);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glBegin(GL11.GL_TRIANGLES);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 0.0f, 1.0f, 0.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f(-1.0f,-1.0f, 0.0f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GL11.glVertex3f( 1.0f,-1.0f, 0.0f); </div><div class="code_line">&nbsp;&nbsp; &nbsp;GL11.glEnd();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Display.update();</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Если использовать glOrtho, то всё ок, если переключиться на gluPerspective, то экран пустой. <br>
<br>
Думал что это из-за того, что near перспективы 0.1, а треугольник рисуется за границей отсечки (на 0.0). Поигравшись с позицией по Z понял, что нет. Скорее всего что-то пропустил, что-то существенное, а именно координатную сетку, которую я задавал ранее с помощью glOrtho. Или ещё что-то? <br>
<br>
Для облегчения вам работы (помощи ньюблу), могу создать репу на гитхабе с реальным (полным кодом) и бинарниками для просмотра, если хотите. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T15:22:20+00:00">05.08.15, 15:22</time></span></span><br>
Если учитывать эту логику:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616619'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T06:50:23+00:00">05.08.15, 06:50</time></span><div class='quote '>1)<br>
Так вот терминам предметной области стоит отнести следующие понятия: сцена, камера, объект, видовое окно. </div></div><br>
и<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616619'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T06:50:23+00:00">05.08.15, 06:50</time></span><div class='quote '>2)<br>
glOrto, glPerspective, матрицы, glViewport это инструмент для реализации понятий описанных в первой группе. </div></div><br>
то получаем то, что камеры без сцены не может существовать, по-этому пробовал использовать одновременно и <strong class='tag-b'>perspective</strong> и <strong class='tag-b'>ortho</strong>, но результат не меняется. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-05T15:24:12+00:00">05.08.15, 15:24</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616619'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-05T06:50:23+00:00">05.08.15, 06:50</time></span><div class='quote '>Надо структурировать подход к разработке выделив объекты Сцена, камера, объект.<br>
И в дальнейшем при создании рендера работать уже с ними. А вот для реализации методов, свойств этих объектов использовать opengl. </div></div><br>
пока не хочется разносить всё на объекты и абстрагироваться от opengl вызовов, надо вкурить базис, а потом уже начинать развлекаться, иначе абстракция получится костыльная. По-этому стараюсь пока писать максимально лаконичные процедурные шняжки, имея на экране минимальный работоспособный функционал, поигравшись с ним уже вводить новые методы и разделять уже более-менее готовое для выноса.]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616642</guid>
        <pubDate>Wed, 05 Aug 2015 09:09:49 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616642</link>
        <description><![CDATA[Serafim: Ну я пытаюсь перейти от высокоуровневых реализаций (движков) до низкоуровневого апи, отсюда такая путаница, когда я вместо инструмента оперирую целым понятием (реализацией некой сущности), есть такое :rolleyes:]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616619</guid>
        <pubDate>Wed, 05 Aug 2015 06:50:23 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616619</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T17:02:41+00:00">04.08.15, 17:02</time></span><div class='quote '>Это просто абстрактные координаты, </div></div><br>
Слово абстрактные тут не к месту. Абстракция это по сути общение нескольких реализаций. Выделения общего для всех вариантов. А где тут обобщение?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T17:02:41+00:00">04.08.15, 17:02</time></span><div class='quote '>случае нулевой камеры). Верно?</div></div><br>
Да.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T17:02:41+00:00">04.08.15, 17:02</time></span><div class='quote '>В этом случае камера (пока опустим реализацию) - точка взгляда на эту систему координат с отсечением по near и far и наличием угла обзора (fov). Так?</div></div><br>
Несуществует такого понятия как &quot;точка взгляда&quot;. Есть точка положения камеры и вектор направления взгляда. У ортогональной проекции нет угла обзора.<br>
<br>
Как сказал молодой клон профессора из футурамы. Поймите двигатель не двигает корабль, двигатель двигает вселенную. <br>
Так же и тут.<br>
<br>
viewport по сути переводит ближнюю плоскость камеры в экранные координаты.<br>
В viewport мы указываем окно или лучше рамки в которых будет отображаться результат растеризации. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T17:02:41+00:00">04.08.15, 17:02</time></span><div class='quote '>В результате получаем примерно вот такое:</div></div><br>
Картинка не правильная. glOrto и glPerpective это два вида проекции от сюда у вас и путаница. Отсюда имеет два вида камер.<br>
<br>
<br>
Вам надо разделить термины на два лагеря.<br>
Термины предметной области и термины OpenGl для реализации первых.<br>
Как переменные и типы.<br>
К примеру <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Boy, Girl: TBody;</div><div class="code_line">переменные:</div><div class="code_line">&nbsp;&nbsp;Мальчик, Девочка: Человек;</div></ol></div></div></div></div><br>
1)<br>
Так вот терминам предметной области стоит отнести следующие понятия: сцена, камера, объект, видовое окно. <br>
<br>
2)<br>
glOrto, glPerspective, матрицы, glViewport это инструмент для реализации понятий описанных в первой группе. <br>
<br>
Надо структурировать подход к разработке выделив объекты Сцена, камера, объект.<br>
И в дальнейшем при создании рендера работать уже с ними. А вот для реализации методов, свойств этих объектов использовать opengl. <br>
<br>
Не старайтесь охватить это одновременно.]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616564</guid>
        <pubDate>Tue, 04 Aug 2015 17:17:51 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616564</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616562'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T17:02:41+00:00">04.08.15, 17:02</time></span><div class='quote '>да и просто квадраты - это изврат.</div></div>Кому - как: рисуя QUADS&#39;ы я всё время жду, что нарисуется честная билинейная гладкая поверхность, но все движки/дрова так сделаны, что рисуется то одна, то другая пара треугольников. :&#39;(]]></description>
        <author>Славян</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616562</guid>
        <pubDate>Tue, 04 Aug 2015 17:02:41 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616562</link>
        <description><![CDATA[Serafim: 2) Eсть функция&#092;метод gl.ortho он определяет координатную сетку, например:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">gl.ortho(0, 800, 0, 600, 1, -1)</div></ol></div></div></div></div><br>
Это просто абстрактные координаты, которые помимо указания направления осей XYZ задают соответсвие между размерами будущих объектов, их позицией и этой системой. Т.е. точка (видимый объект) в точке (координатной) 400, 300, 0 будет ровно по середине (в случае нулевой камеры). Верно?<br>
<br>
2.1) В этом случае камера (пока опустим реализацию) - точка взгляда на эту систему координат с отсечением по near и far и наличием угла обзора (fov). Так?<br>
<br>
<br>
2.1) viewport - способ соотношения &quot;взгляда&quot; камеры на монитор?<br>
<br>
В результате получаем примерно вот такое: <br>
<span class="b-attach" data-size="79011" data-hits="1095" data-attach-id="46101" data-attach-post-id="3616562">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3616562&amp;attach_id=46101' title='Скачать файл' target='_blank'>123123.jpg</a> (, : 1095)
		</span> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2015-08-04T17:05:06+00:00">04.08.15, 17:05</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616551'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T16:10:56+00:00">04.08.15, 16:10</time></span><div class='quote '>Вроде бы у шейдеров есть некоторые затруднения с QUADS&#39;ами. Так что безопаснее через TRIANGLE_STRIP прокрутить, если что. </div></div><br>
там в любом случае жопа какая-то будет (скорее всего просто ничего не нарисуется, т.к. GL отбрасывает лишнее по-дефолту), точек же всего три, а квадрат состоит из 4х :whistle: да и просто квадраты - это изврат.]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616551</guid>
        <pubDate>Tue, 04 Aug 2015 16:10:56 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616551</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Serafim &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T15:28:49+00:00">04.08.15, 15:28</time></span><div class='quote '>в моём случае POINTS, но ничего не мешает мне заменить на QUADS или лучше даже TRIANGLE_STRIP</div></div>Вроде бы у шейдеров есть некоторые затруднения с QUADS&#39;ами. Так что безопаснее через TRIANGLE_STRIP прокрутить, если что. :unsure:]]></description>
        <author>Славян</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616550</guid>
        <pubDate>Tue, 04 Aug 2015 15:28:49 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616550</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616542'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T14:49:35+00:00">04.08.15, 14:49</time></span><div class='quote '>Вас интересует конкретная предметная область вывод точки? Или вместо точек любой другой примитив к примеру мэшь?</div></div><br>
насколько я понял по примерам - отличия только в способе рендера, в моём случае POINTS, но ничего не мешает мне заменить на QUADS или лучше даже TRIANGLE_STRIP (но тогда надо либо всё поместить между begin&#092;end, либо вызвать drawArrays только один раз), так что нет. В моём случае не стоило применять термин &quot;меш&quot;, т.к. в примере это всё же просто точки.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616542'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T14:49:35+00:00">04.08.15, 14:49</time></span><div class='quote '>Т.е. вас интересует конкретный пример или интересуют потенциальные возможности OpenGL? </div></div><br>
Второе; Пример - это лишь частный случай в попытке понять возможности и разобраться с АПИ.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616542'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T14:49:35+00:00">04.08.15, 14:49</time></span><div class='quote '>Вместо того что-бы сразу отдать на обработку весь массив из N точек он дёргает по одной точке. Запомните групповые операции работают быстрее. </div></div><br>
Это для того, что бы пример походил на первый, конечно же, в реальной жизни я написал бы все три точки между begin&#092;end :)]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616542</guid>
        <pubDate>Tue, 04 Aug 2015 14:49:35 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616542</link>
        <description><![CDATA[Pavia: Давай немного проясним вопрос. Вас интересует конкретная предметная область вывод точки? Или вместо точек любой другой примитив к примеру мэшь?Т.е. вас интересует конкретный пример или интересуют потенциальные возможности OpenGL? <br><br>Почему есть два метода? Пожалуй это дело вкуса кто-то ест рис ложкой, ктото вилкой, а иные палочками.<br>Есть старый метод, есть новый.  У каждого есть свои ограничения. Для 3-х точек они не принципиальны. Правда стоит сказать чтр второй пример ужастный. Вместо того что-бы сразу отдать на обработку весь массив из N точек он дёргает по одной точке. Запомните групповые операции работают быстрее. В данном случае такой подход сбивает движёк opengl,  но не сильнее чем в примере с begin-end.]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616525</guid>
        <pubDate>Tue, 04 Aug 2015 13:23:20 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616525</link>
        <description><![CDATA[Serafim: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=404950&view=findpost&p=3616517'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2015-08-04T12:56:30+00:00">04.08.15, 12:56</time></span><div class='quote '>Плюс на CPU можете модифицировать длину массива, а на GPU только с шейдеров 5 версии.</div></div><br>
хмхм? Имеется ввиду кидать в шейдер больше чем v4f за раз?]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616517</guid>
        <pubDate>Tue, 04 Aug 2015 12:56:30 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616517</link>
        <description><![CDATA[Pavia: При модификации координат при вращение анимации и других расчётах <br>
Шейдоры работают на GPU, begin-end на CPU.<br>
Плюс на CPU можете модифицировать длину массива, а на GPU только с шейдеров 5 версии.<br>
<br>
 begin-end он как бы не для точек. А для динамически изменяющейся <span class='tag-u'>сцены</span>.<br>
А шейдоры для статики. Или есть технология предварительного расчёта.<br>
<br>
На begin-end больше возможностей, на шейдерах зависит от версии .]]></description>
        <author>Pavia</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616512</guid>
        <pubDate>Tue, 04 Aug 2015 12:16:53 +0000</pubDate>
        <title>Совсем глупые вопросы по OpenGL</title>
        <link>https://forum.sources.ru/index.php?showtopic=404950&amp;view=findpost&amp;p=3616512</link>
        <description><![CDATA[Serafim: Тут буду постить мелкие вопросы по OpenGL (на абстрактном ЯП), ответ на которые либо не понял, либо понял, но не до конца, либо вообще не нашёл в интернетах.<br>
<br>
1) В чём отличие задавать меши с помощью вершинного шейдера:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">attribute vec4 a_Position;</div><div class="code_line">void main() {</div><div class="code_line">&nbsp;&nbsp;gl_Position = a_Position;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">....</div><div class="code_line">&nbsp;</div><div class="code_line">// a_Position - ссылка на атрибут a_Position</div><div class="code_line">gl.vertexAttrib3f(a_Position, x1, y1, .0);</div><div class="code_line">gl.drawArrays(gl.POINTS, 0, 1);</div><div class="code_line">&nbsp;</div><div class="code_line">gl.vertexAttrib3f(a_Position, x2, y2, .0);</div><div class="code_line">gl.drawArrays(gl.POINTS, 0, 1);</div><div class="code_line">&nbsp;</div><div class="code_line">gl.vertexAttrib3f(a_Position, x3, y3, .0);</div><div class="code_line">gl.drawArrays(gl.POINTS, 0, 1);</div></ol></div></div></div></div><br>
<br>
И с помощью нативных вызовов:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">gl.begin(gl.POINTS);</div><div class="code_line">gl.vertex2f(x1, y1);</div><div class="code_line">gl.end();</div><div class="code_line">&nbsp;</div><div class="code_line">gl.begin(gl.POINTS);</div><div class="code_line">gl.vertex2f(x2, y2);</div><div class="code_line">gl.end();</div><div class="code_line">&nbsp;</div><div class="code_line">gl.begin(gl.POINTS);</div><div class="code_line">gl.vertex2f(x3, y3);</div><div class="code_line">gl.end();</div></ol></div></div></div></div><br>
<br>
В чём отличия, преимущества, смысл вообще существования двух разных способов отрисовки трёх точек? <br>
<br>
*Я в курсе, что begin&#092;end - это GL1+, а drawArrays - GL2+. Просто совмещал примеры вообще на разных языках =)]]></description>
        <author>Serafim</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	