|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.11.2010, 22:27 | #1 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
GLSL
Ребят кто разбирался c шейдерными граблями GLSL?
Как с помощью GLSL вершинного шейдера организовать вывод прямоугольника в указанные координаты (x,y) как это делается с помощью glVertex2i(x,y) в glOrtho - режиме. т.е. чтобы координатная система была не -1…1 по xy-осям, а соизмерима с шириной и высотой текущего окна и измерялась в пикселях; Пользуясь примерами из сети на геймдеве и других сайтах, на их основе собрал свою солянку. Нарисовал прямоугольник + 2 шейдера к нему (меняются по нажатию клавиш 1 и 2) …но все-таки он рисуется в 3d мире… а как привязать его к координатам окна пока не догадался. Есть идеи?) А может быть готовые решения или примеры?. Я пока сам не нашел таких(
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
13.11.2010, 13:57 | #2 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Не совсем понял в чем проблема. Тебе нужно в вершинном шейдере изменить положение рисуемого в opengl объекта, при этом указывая реальные координаты а не -1..1?
|
13.11.2010, 20:41 | #3 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Именно)
Я так предполагаю, что работа в этом случае производится с матрицей проекции (projectionMatrix) Мне интересно. Как ее просчитывают? И где ее просчитывают? (в программе с помощью ЦПУ или же отправляют в виде юниформов (glUniform…) в шейдер и там считают?)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
13.11.2010, 22:11 | #4 |
Пользователь
Регистрация: 26.06.2010
Сообщений: 52
|
Вместо glOrtho(...) используй gluOrtho2D(0.0,Width,0.0,Height);
где Width и Height - ширина и высота окна в пикселях. Тогда в glVertex(...) координаты X и Y можна задавать в пикселях. Но ИМХО это очень неудобно ибо ты жестко привязываешься к размерам окна. |
13.11.2010, 23:40 | #5 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Спасибо, знаю про gluOrtho2D, но нет это не то(.
Используется gl3+ контекст и хотелось бы использовать его парадигму программирования графики. А это в основе своей работа и рисование только через шейдеры, с загрузкой буферов и текстур в видео, а тут на стороне ЦПУ нам рекомендуется лишь только опрашивать и задавать «стейты устройства рендеринга» посредством glEnable(), в общем прослеживается следующая логика - кормить видео карту данными и программами -шейдерами и следить за выполнением) Immediate mode – отбрасывается, это glVertex() и иже с ней старый функционал. И потом glOrtho / gluOrtho2D все равно манипулировала матрицей, которую я и сам могу передать видео карте для просчета геометрии. Глянул dxsdk документацию нашел там описание ф-и D3DXMatrixOrthoRH This function uses the following formula to compute the returned matrix. Где… w [in] Width of the view volume. h [in] Height of the view volume. zn [in] Minimum z-value of the view volume. zf [in] Maximum z-value of the view volume. Это уже ближе к сути моего вопроса))
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
14.11.2010, 00:33 | #6 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Кажется, разобрался ф-я получилась такой…
Код:
Код:
Код:
Код:
Код:
Для полного счастья осталось реализовать еще два момента. 1. реализовать мат. модель ф-ии D3DXMatrixOrthoOffCenterRH дабы (0,0) находится не по центру, а в углу окна. 2. и возможность задавать координаты и размеры прямоугольника через юниформы шейдера. чтобы каждый раз не пересобрать геометрию, в случае изменения положения или линейных размеров прямоугольника)
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! Последний раз редактировалось Beermonza; 15.11.2010 в 20:45. |
15.11.2010, 14:51 | #7 | |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Что значит - «forward compatible»?
Тут, наверное, надо иметь ввиду создаваемый контекст GL все-таки. Я так понимаю всего их два типа может быть (возможно и смешанный тип?). 1. WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ ARB И 2. WGL_CONTEXT_CORE_PROFILE_BIT_ARB Собственно вопрос: какая практическая польза от этих флагов, и как они сказываются на производительности (если сказываются) или на функциональности, контекста? Пример: Код:
Код:
Извиняюсь, данное сообщение больше не актуально, нашел ответ) Цитата:
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! Последний раз редактировалось .pixel; 15.11.2010 в 15:19. Причина: время |
|
08.12.2010, 18:01 | #8 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Случаем никто не озадачивался генерированием Индексного буфера для Вершинной геометрии? Может, есть у кого чего по этому поводу?
Надоело для своих поделок делать так… Код:
Код:
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
16.12.2010, 22:25 | #9 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Пытаюсь масштабировать текстуру на плоскости и вот что выходит Оо
Геометрия плоскости. (в VBO) Код:
Вершинный шейдер только передает текстурные координаты во фрагментный шейдер. Фрагментный шейдер. Код:
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! |
18.12.2010, 14:30 | #10 |
c++, dx/ogl
Форумчанин
Регистрация: 10.11.2008
Сообщений: 131
|
Разобрался с текстурой… грабля как оказалось, была в процедуре загрузки текстуры… надо было сменить способ обертки текстуры с GL_CLAMP_TO_EDGE на GL_REPEAT:
Код:
Код:
«Деревянный космолет с кучей гвоздей» - ну или нечто на него отдаленно похожее)) * в дальнейшем хочу разобраться с - текстурной разверткой - а так же сделать простеющую Tweening- вершинную анимацию. (Наподобие DolphinVS из DX9SDK, где вся анимация движения дельфина строится на основе интерполированных данных из вершин трех сеток(Mesh’й) (читай - 3-х кадров анимации))
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but rather how many batches/frame! Последний раз редактировалось .pixel; 18.12.2010 в 14:49. Причина: время |