![]() |
Ответ: OpenGL
Код:
opengl32.lib |
Ответ: OpenGL
OpenGL 4.4 is out! Даже с бета драйверами от nVidia
http://www.opengl.org/registry/doc/glspec44.core.pdf |
Ответ: OpenGL
А можно в кратце, что там нового и т.п.?
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
Последние два, отлично для GI пойдут и вокселей?
А вот GL_ARB_multi_bind - интерестно как будет работать, т.к. как мне известно биндинги - это не мало производительности уходит, из-за этого делают сортировки и инстансинги. И GL_ARB_buffer_storage - это как на консолях - один буффер, заместо раздельных RAM <> VRAM? |
Ответ: OpenGL
скорее для мегатекстур.
второе аппаратные мегатекстуры и есть а первое это возможность в шейдере использовать любую загруженную текстуру. т.е. снимает ограничение на кол-во привязанных текстур. |
Ответ: OpenGL
О_о
Это уже что-то совсем невероятное. Решил опять попробовать openGL на Code::Blocks. На студии все отлично работает. В Code::Blocks выбираю компилятор студии. Значит все инклюды он берет из студии. Однако - не работает. Пытается подключить glu.h, которого нет, который и не нужен так как устарел. В чем может быть дело? Может в Code::Blocks забита ранняя версия OpenGL? |
Ответ: OpenGL
Попробовал создать контекст OpenGl 3.3 по первому уроку gl33lessons (в постак выше ссылка есть), вылетает на создании wglCreateContextAttribsARB (пробовал на нетбуке).
Последующий вопрос конечно глупый, т.к. видеоадаптер у меня Intel GMA 3150, да и гугл ничего хорошего не сообщил мне (поддержка OpenGL 1.4 только вроде)... Но вдруг, каким то чудом, можно... Вообщем, я в глубоком пролёте, да? |
Ответ: OpenGL
Де-факто да.
|
Ответ: OpenGL
wglCreateContextAttribsARB это 3.0 и выше.
на всяких там i3, i5, i7 оно поддерживается. на нетбуках врятли. чтобы не вылетало сравнивай с нулем указатель на функцию после получения. по крайней мере будет ясно где ошибка. |
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
Имею нетбук на i3. Видео встроенное HD 4000. Там держит 3.0 гл на линуксе, и 3.3 на винде.
В спецификации вроде было написано что должен держать 4.0 Хотя я до него ещё и дорос, так что не важно. |
Ответ: OpenGL
Появился вопрос, касательно вывода изображений.
Если выводить все изображения за один дип, мы должны использовать один батч, то есть большую текстуру. Но как тогда быть со вращением, изменением размера? Мы же, как я понимаю, заполняем нашу большую текстуру попиксельно из всех изображений. Поэтому, если нам нужно будет нарисовать одно из этих изображений повернутой, придется исхитряться вручную? Или есть какой-то иной способ, кроме попиксельного, сбора большой текстуры из маленьких учитывая все трансформации? Или же нужно использовать несколько батчей, у которых будут свои свойства вращения и масштаба? |
Ответ: OpenGL
Nikich, все неправильно.
в атласе изображения хранятся безо всяких трансформаций. трансформируются лишь вершины выходного меша. и каждого спрайта будут свои uv координаты. т.е. uv координаты статичны и зависят только от спрайта. а вот позиция уже трансформируется в зависимости от позиции, поворота и скейла спрайта. |
Ответ: OpenGL
Оу, я думал, мы используем просто квад, а не меш.
И трансформации выполняются на шейдерном уровне, да? |
Ответ: OpenGL
у меня на цпу. была идея заюзать геометрический шейдер для этого, но что-то лень стало ее реализовывать.
меш состоящий из тыщи квадов. как то так. тем более ты же вроде уже реализовал это? |
Ответ: OpenGL
Спасибо за помощь!
На SDL, а там дела совсем по-другому обстоят:( |
Ответ: OpenGL
https://code.google.com/p/gl33lessons/
http://steps3d.narod.ru/ вот годные ссылки на современный огл, хотя особых приемов для 2д там вроде нет |
Ответ: OpenGL
http://www.openglsuperbible.com/
На официальном сайте openGL была запись о данной книге. Суть в том, что исходной код всех примеров в открытом доступе, а книга написана по современному контексту, то есть отличное сборище примеров по современному контексте доступно по ссылке http://openglsuperbible.com/files/sb...2013_08_05.zip |
Ответ: OpenGL
ухтыж.
не знал что вышла шестая редакция. с амазона дорого заказывать. 2.5к в рублях. причем сама книга стоит по божески, что то вроде 1.2к. есть ли способ получить ее дешевле? |
Ответ: OpenGL
таки заказал в амазоне. ибо других вариантов не нашел((
|
Ответ: OpenGL
вот, кстати, хорошее ревью 4.4:
http://www.g-truc.net/doc/OpenGL%204.4%20review.pdf |
Ответ: OpenGL
Цитата:
с другого конца земли. 3 дня! я в приятном шоке))) |
Ответ: OpenGL
sdl научился третий контекст
а вообще лучше freeglut+glew+адекватная IDE наподобие qt-creator+CMake |
Ответ: OpenGL
нафиг они не нужны, все эти sdl.
20 строчек кода на поднятие контекста за платформу. зато полный контроль. |
Ответ: OpenGL
Как передать в шейдер множество текстур?
У меня есть большой массив vertexData, в котором хранятся координаты вертексов и координаты текстуры. Рисуется это всё дело за один glDrawArrays(верно ли?). И мне нужно на каждую пару треугольников(квад) наложить свою текстуру. Как это лучше всего сделать? |
Ответ: OpenGL
GL_ARB_BINDLESS_TEXTURE - лучший вариант, но ето только на кеплере и выше. Тут у каждого пикселя может быть своя текстура, что очень круто. Тебе нужно будет лишь добавить к вершине аттрибут - 64битный хэндл текстуры на гпу.
если текстуры одинаковые по формату и размеру - texture array. если разные - пакуй в атлас. вообще последний вариант самый неприхотливый |
Ответ: OpenGL
А как быть с контекстом постарее?
|
Ответ: OpenGL
атлас - хоть на 1.0.
|
Ответ: OpenGL
Код:
gl_Position = vec4(vposition*mat2(cos(angle),-sin(angle),sin(angle),cos(angle)),0.0,1.0); Решил вращать на гапи, передавая в шейдер угол поворота. Матрица проверенная, точно работать должна, однако результат дает очень странный, получается дикое искажение примитива, а не вращение. Как будто используется ещё и z ось. В чем может быть проблема? Про оптимизацию не надо говорить, написал так здесь для краткости кода. |
Ответ: OpenGL
В гапи ожидается screen space матрица, или ты умножаешь на viewport projection матрицу до твоего поворота?
|
Ответ: OpenGL
Нет, больше на матрицы я не умножаю. Можно подробнее? Это вообще необходимо при жестком 2D?
|
Ответ: OpenGL
Ну прежде чем отдавать в шейдере позицию вершины во фрагментный конвеер ты должен её умножить на матрицу камеры (viewproj).
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
Цитата:
Ты пытаешься повернуть вершину уже в скрин-спейсе, и тут два варианта - либо ты в шейдере перед этим множишь на viewproj либо ещё до шейдера это делаешь (на CPU). |
Ответ: OpenGL
Цитата:
Код:
mat2 rotationMat = mat2(cos(angle),-sin(angle),sin(angle),cos(angle)); и вообще вскрой любой движок, так никто не делает. Обычно это на ЦПУ делается. modelMat должен приехать уже с поворотом, а вместо двух projMat, viewMat можно в шейдер отдавать уже перемноженый projViewMat, актуально для батчей, чтоб не перемножать на каждую вершину. |
Ответ: OpenGL
А почему тогда отображение без вращения верно?
И если всё же нужны матрицы, как её рассчитать вручную, без GLM? Просто как-то не ахти подключать дополнительную библиотеку для одного расчета, а гугл явно твердит, что следует использовать GLM. |
Ответ: OpenGL
Цитата:
Можешь еще спросить у HolyDel, он реализовывал без GLM. Только вроде для mat4x4 p.s. если верно без вращения, значит ты уже в скрин спейсе формируешь и отправляешь в шейдер, тогда поворот будет работать относительно не своего центра, а точки 0.0 на экране, это центр зачем тогда вообще на матрицу умножать? вот на, кусок с моего движка Код:
point BatchOpenGL::rotatePoint(float cx, float cy, float angle, point p) |
Ответ: OpenGL
У HolyDel же с 3D, мне оно вообще не нужно и не планируется, поэтому камера всегда будет в одном и том же положении, значит и матрица проекции на камеру тоже всегда будет одна и та же.
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
у парня жеское 2д.
ему пока ненужны ни матрицы проекции ни что то другое. Код:
gl_Position = vec4(vposition*mat2(cos(angle),-sin(angle),sin(angle),cos(angle)),0.0,1.0); Цитата:
кстати, в новой супербиблии, как раз все начинается тупо с вывода точки. даже не треугольника. зато сразу понятно где ноль)) без матриц, без всего. этим книга и хороша. для новичка там очень правильная последовательность обучения на мой взгляд. |
Ответ: OpenGL
А, и ещё вопрос. Рисовать линию как 2 треугольника нормально? Я знаю, что OGL поддерживает свой вывод линий, но тогда придется прибегнуть уже к другому DIP.
|
Ответ: OpenGL
вывести линию может быть дороже чем два треугольника.
+ треугольниками гибче, линия может быть любой ширины, ее можно затекстурить, и т.д. |
Ответ: OpenGL
запилил за пол дня супер легковесный 2д движок на опенгл 2 контексте, без матриц (как тебе нужно), можно вращать, правда на цпу. Еще можно выводить отдельные части текстуры (атлас), еще батчи есть.
Репо https://bitbucket.org/pozitiffcat/ste Умеет только TGA со сжатием или без. Можно расширять своими классами для загрузки файлов и конвертирование изображений. Так сказать движок открыт для расширений. Делал для себя (вчера понял что надо сделать), чтоб легко писать под ios, android. Собирается на mac и linux посредством cmake есть скрипт сборки для линукса. Соберет статически либу и тестовое приложение. В убунте нужно sudo apt-get install freeglut3-dev Библиотека работает на контексте, тоесть можно собрать без GLUT и внедрять в любой контекст, Qt, Android, iOS, SDL и т.п. пример кода: Код:
#include "steGlutApp.h" |
Ответ: OpenGL
Слушай, друг, а ты для cmake сам собирал етот CMakeList.txt или какой-то тулзой его можно выгрузить со студии?
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
у меня 1586 файла в сурсах (из них только 175 мои, остальные библиотеки). очень муторно вручную будет собирать((.
|
Ответ: OpenGL
ты из cmake можешь вызывать сборку сторонних либ, их не обязательно переписывать на cmake.
|
Ответ: OpenGL
Вопрос по альфе. Если у нас два триса с альфой, рисуются они за один дип и касаются друг друга, почему не наблюдается прозрачность? Дело точно не в передаче шейдеру, вручную вбивал 0.5 на альфе, все равно трисы полностью непрозрачны.
|
Ответ: OpenGL
штуки с альфой надо сортировать от дальних к ближним.
рисовать полупрозрачную невыпуклую геометрию в 1 дип фигня выйдет с половины ракурсов. а два пересекающихся крестом триангла вообще нормально не сделаешь. ну и да, надо блендинг отдельно в апи включать, а не только в шейдере писать альфу, режимов блендинга много разных. не знаю где оно в ГЛ, юзаю ДХ =] |
Ответ: OpenGL
Блендинг включил ? =)
|
Ответ: OpenGL
Цитата:
У меня это делается так: gl.disable(gl.DEPTH_TEST); В "большом" OGL наверное как-то похоже. Вообще см. порядок рендера. Бленденные объекты надо рендерить после всех остальных. Вообще скриншоты бы неплохо, но в целом диагноз: без сортировки с альфой получишь дерьмецо. |
Ответ: OpenGL
http://www.opengl.org/sdk/docs/man/x...lDepthFunc.xml
тебе в помощь, меня когда-то выручало, когда партиклы рисовал а вообще перед отрисовкой всякой херни, для которой временно нужно отключить глубину, но что бы она не перекрывала существующую юзай это http://www.opengl.org/sdk/docs/man/x...lDepthMask.xml |
Ответ: OpenGL
Есть ли годная библиотека/алгоритм для создания атласа из текстурок налету? Всё таки хочется сделать весь рендер в один DIP, однако рендер текста с FreeType явно требует множества DIP(умельцы на http://en.wikibooks.org/wiki/OpenGL_...t_Rendering_01 вообще предлагают каждый символ за отдельный DIP рисовать).
|
Ответ: OpenGL
Цитата:
|
Ответ: OpenGL
Я решил что мне пора за opengl основательно взяться.
Так вот сегодня начал разбираться и непонятна такая вещь: допустим мне надо определённый ректангл закрасить цветом с помощью glClear. В доках написано что можно юзать glScissor. Ок я сделал так: Код:
glEnable( GL_SCISSOR_TEST ); Видимо я что то упустил. |
Ответ: OpenGL
не знаю точно насчёт GL, но вот из dx10-11 убрали фичу клеара ректанглов (в 9 была) по каким-то причинам что типа железо так не умеет нормально делать все равно. советуют рисовать квад с цветом очищения)
т.к. проблема вроде завязана на хардваре, то и в gl возможно то же. --- бррр... похоже это было только в 10, в 11 снова можно клеарить ректанглы. --- а, нет, в 11 тоже нельзя, но можно в 11.1 --- могу точно сказать что в юнити на дх11 клеар делается рисованием квадов |
Ответ: OpenGL
OpenGL очень запутанная вещь!
Собственно да, поэтому и спрашиваю, в d3d9 можно не просто рект закрасить, но и передать массив ректов за один вызов Clear. |
Ответ: OpenGL
Да походу дела на glClear скиссор не влияет, потому что квад обрезается скиссором, а заполнение цвета - нет.
|
Ответ: OpenGL
А тут пишут что все ок: http://gamedev.stackexchange.com/que...e-of-glscissor
|
Ответ: OpenGL
у меня работало.
|
Ответ: OpenGL
Ну что, значит у меня левый opengl =).
Дальше поразбираюсь в нём чтоб хоть как то ориентироваться, тогда может быть попробую поэкспериментировать со скиссором. |
Ответ: OpenGL
у меня правда это было на мульткамерах.
там помимо scissor-a был еще и glViewport |
Часовой пояс GMT +4, время: 18:18. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot