Войти
ПрограммированиеФорум2D графика и изометрия

консультация для движка openRA

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 Следующая »
#0
21:28, 11 сен. 2019

Народ, я тут мод делаю дюны2(креативлю)

Это откуда запускается :
https://github.com/OpenRA/OpenRA/tree/bleed/OpenRA.Platforms.Default
из этого файла
https://github.com/OpenRA/OpenRA/blob/d712bdea859c32b4d219a478bd0… Window.cs#L76


Тут в файле Shaders.cs есть обработка шейдеров.
https://github.com/OpenRA/OpenRA/blob/d712bdea859c32b4d219a478bd0… nderer.cs#L69

Вот тут есть инициализация шейдеров , двух штук.
https://github.com/OpenRA/OpenRA/tree/bleed/glsl


Подскажите, как вообще въехать в эту тему?
Почему выбран только 1 шейдер для каждого случая?

Сколько уже пересмотрел книжек, не понимаю, архитектуру в openRA для рисовки.

Мой интерес, дописать эту тему так, чтобы
https://github.com/OpenRA/OpenRA/blob/d712bdea859c32b4d219a478bd0… derer.cs#L107
В этом классе метод DrawSprite мог рисовать какой либо спрайт и потом запускать по нему шейдер.

Дело в том, что в игре используются шрифт TTF, он плоский на рендере. С помощью шейдера вижу путь, сделать его объемным и бросить свет на буквы.

Это код рисующий шрифты.
Глифы превращаются в спрайты и собственная вся магия.

var g = glyphs[Pair.New(s, c)];
        if (g.Sprite != null)
          Game.Renderer.RgbaSpriteRenderer.DrawSprite(g.Sprite,
            new float2(
              (int)Math.Round(p.X * deviceScale + g.Offset.X, 0) / deviceScale,
              p.Y + g.Offset.Y / deviceScale),
            g.Sprite.Size / deviceScale);


#1
13:08, 12 сен. 2019

AlexeiK
> я тут мод делаю дюны2
О ДА!!!!

Покажи скрины. Куда донатить? Уже можно поиграть?

#2
13:16, 12 сен. 2019

Конечно, можно поиграть.
Даже видос есть.
https://www.youtube.com/watch?v=BVswMcT69h0

Да, толку от доната?
Нужны мозги.

#3
13:24, 12 сен. 2019

AlexeiK
Красотища!

#4
14:47, 12 сен. 2019

AlexeiK
> Да, толку от доната?
Да правильно :) переадресовывай донатеров на меня )))

#5
(Правка: 15:13) 15:12, 12 сен. 2019

Что, на gamedev, теперь, такой уровень общения?
Печально.

#6
1:36, 13 сен. 2019

AlexeiK
> Что, на gamedev, теперь, такой уровень общения?
А он был лучше?

#7
4:17, 13 сен. 2019

AlexeiK
я так и не понял, в чём вопрос

#8
5:14, 13 сен. 2019

AlexeiK
> мог рисовать какой либо спрайт и потом запускать по нему шейдер.
Это так не работает.
Судя по коду, SpriteRenderer собирает все квады в один большой буффер, потом рисует за раз вызовом Flush(). Написать отдельный TextRenderer здесь вряд ли кто поможет.

#9
10:01, 13 сен. 2019

Dimich
> Судя по коду, SpriteRenderer собирает все квады в один большой буффер

Да, спасибо за пояснение.
Вернее, он делает квады под каждую текстуру в большой буфер квадов.
А потом рисует , так?

Я не могу понять фишку openGL.
По идее буферов с вершинами может быть много.
А рисует то он на экран, только какой то один буфер?

Могу ли я , сделать два буфера, один для спрайтов карты, один для спрайтов от шрифтов.
Потом дать команду, нарисовать слой из спрайтов для карт, и после слой спрайтов для шрифтов?

#10
10:19, 13 сен. 2019

AlexeiK
> Могу ли я , сделать два буфера, один для спрайтов карты, один для спрайтов от
> шрифтов.
Конечно можешь. Там в коде на каждый Renderer свои шейдер и вершинный буфер. По сути их 2, остальные дочерние. Как я уже сказал, тебе надо написать свой TextRenderer со своим шейдером и подсунуть его в SpriteFont::DrawText.

#11
11:08, 13 сен. 2019

Ага.
Четко,четко.
Но малось не хватает знаний, как это будет жить.
Flush в openGL работает для привязанного буфера.
Не догоняю, как все, что рендерится с помощью буферов, ляжет на плоскость.
В какой очередности?

#12
11:13, 13 сен. 2019

AlexeiK
> Flush в openGL работает для привязанного буфера.
Flush - это функция в коде движка. OpenGL здесь вообще не причём. Разберись, как работает рендер самого OpenRA, без копания в кишках.

> В какой очередности?
Где-то используется глубина, где-то порядок зависит от порядка вызова DrawSprite, мне лень за тебя во всём этом ковыряться, ещё и на C#.

#13
11:22, 13 сен. 2019

А, где это описывается?
Я уж столько литературы перелопатил.
Пишут коряво.
Сча вот читаю
Erik M. Buck - Learning OpenGL ES for iOS -  A Hands-on Guide to Modern 3D Graphics Programming - 2012

Что уже лучше, чем другие книжки.
ВОт заметь, ты сказал, про глубину , порядок отрисовки, но пока из 5 книг, я не встретил какуюто, где объяснялось теми же терминами, что ты сказал. Это вызывает затруднения.

#14
11:28, 13 сен. 2019

AlexeiK
> теми же терминами, что ты сказал
Я ж про движок пишу. Какой толк тебе сейчас от OpenGL, если в движке OpenRA используются свои абстракции?

Страницы: 1 2 Следующая »
ПрограммированиеФорум2D графика и изометрия