forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Пишем 3D движок - замену Xors3D (http://forum.boolean.name/showthread.php?t=18971)

bugway 29.06.2014 12:17

Ответ: Пишем 3D движок - замену Xors3D
 
Всем привет!

У кого-нибудь есть нормальная инфа, как делать вывод текста с нуля, не используя d3dx и подобные библиотеки?

Дело в том, что удалось оптимизировать код таким образом, что на пустой сцене FPS переваливает за 10000 (!!!). Вывод одной строчки через d3dx убивает фпс до 6500. А вывод еще нескольких строк - до 2000 фпс. А если с GUI - то фпс не более 500. Не хочется изобретать велосипед, поэтому может кто подскажет, чем кто пользовался и как выводил текст и GUI?

Пока варианта 2: либо d3dx/dxut, либо каждую букву стрипом с текстурой буквы. Может еще какие варианты есть? Еще не могу отделаться от мысли рисовать текст напрямую в backbuffer. Но в интернете что-то не нашел такого варианта...

Mr_F_ 29.06.2014 12:27

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Вывод одной строчки через d3dx убивает фпс до 6500. А вывод еще нескольких строк - до 2000 фпс. А если с GUI - то фпс не более 500
такие измерения ни о чём не говорят, лучше кол-во миллисекунд замерь и подумай сколько у тебя их занимает пустая сцена в 10к фпс. на фоне скорости реальной игры, этот д3дх текст заметен вообще не будет.

bugway 29.06.2014 13:00

Ответ: Пишем 3D движок - замену Xors3D
 
1 строка - около 0.2 мс. Может я и правда слишком зациклился на оптимизациях...

Но вот как реализовать мягко скролируемый текст... Тут уже не просто вывод текста - тут надо рисовать часть первой видимой строки, n-строк посередине, часть последней видимой строки. Это дополнительные проверки и потеря ФПС... Или рендерить в текстуру и натягивать на страйп?

Mr_F_ 29.06.2014 13:30

Ответ: Пишем 3D движок - замену Xors3D
 
ну вообще по-мойму сегодня уже все игры, неигры и кто угодно рендерит UI квадами с текстурой. это БЫСТРО. в том числе д3дх делает то же самое. зная это, достаточно очень тривиально изменить VS чтобы плавно сдвигать все вертексы. можешь сделать это с д3дхом (если там всё не слишком через жопу), можешь сам, но в последнем случае учти, что тебе придётся много времени потратить на чёртов текст, чтобы там кернинг был нормальный, тексель в пиксель попадал и т. д., зависит дальше от амбиций (размеры/разноцветность/болд-италик/теги...)
---
брр погоди, разве д3дх не позволяет рисовать текст начиная с любого пикселя экрана? насколько я помню, позволяет. ну и какие проблемы со скроллингом?
---
а, ты что ли про то чтобы скроллить не влезающий в экран большой текст? и про проверки на видимые строки? пфф, это вообще ничего не стоит, чтобы тут про фпс рассуждать

Samodelkin 29.06.2014 15:01

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Mr_F_ (Сообщение 283613)
ну вообще по-мойму сегодня уже все игры, неигры и кто угодно рендерит UI квадами с текстурой. это БЫСТРО.

Именно так я делаю у себя.

Цитата:

Сообщение от Mr_F_ (Сообщение 283613)
в том числе д3дх делает то же самое.

Вот я не уверен, я столкнулся с той же самой проблемой - текст в д3дх реально много жрёт. Была сцена со средним фпс 60, вывод текста на 2/3 площади экрана просадил до 5 фпс. Даже если сцену потом убрать - фпс не поднимется. Однако я не уверен что я правильно рисовал. Я каждый раз вызывал функцию прорисовки текста, а может быть, если текст не меняется, есть способ нарисовать его один раз куда-нибудь в текстуру и затем выводить эту саму текстуру.

Цитата:

Сообщение от Mr_F_ (Сообщение 283613)
брр погоди, разве д3дх не позволяет рисовать текст начиная с любого пикселя экрана? насколько я помню, позволяет.

Да 100% я так делал.

Mr_F_ 29.06.2014 16:15

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Была сцена со средним фпс 60, вывод текста на 2/3 площади экрана просадил до 5 фпс.
ну не знаю, я его юзал, и он почти не влиял вообще. выводил несколько дебаг строчек типа фпс и подобного.

Цитата:

есть способ нарисовать его один раз куда-нибудь в текстуру и затем выводить эту саму текстуру.
экран текста выводить в фуллрес текстуру будет медленее чем рисовать квады с буковками склееные в 1 дип.

Samodelkin 29.06.2014 17:11

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Mr_F_ (Сообщение 283620)
ну не знаю, я его юзал, и он почти не влиял вообще. выводил несколько дебаг строчек типа фпс и подобного.


экран текста выводить в фуллрес текстуру будет медленее чем рисовать квады с буковками склееные в 1 дип.

Зависит от того какую площадь экрана покрывает текст, попробуй вывести на весь экран.

Ну если свой текст писать то через квады, но д3дх выглядит красивей, а если его тоже выводить по буквам через квады будет также некрасиво как свой текст через квады.
Вообще можно минимизировать количество текста в ХАДе, а где-нибудь в окне меню игра то на паузе будет - можно и с более низким фпс повыводить.

Mr_F_ 29.06.2014 17:20

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Ну если свой текст писать то через квады, но д3дх выглядит красивей, а если его тоже выводить по буквам через квады будет также некрасиво как свой текст через квады.
д3дх работает через квады
делать через квады не делает текст "некрасивым"
некрасивым его делают кривые руки

Samodelkin 29.06.2014 19:32

Ответ: Пишем 3D движок - замену Xors3D
 
Ну я не художник чтоб шрифты рисовать, подходящего размера в инете не нашел, а нужно было чтоб тексель в пиксель попадал и нужного размера, пришлось самому шрифты рисовать.

moka 29.06.2014 19:36

Ответ: Пишем 3D движок - замену Xors3D
 
Зачем рисовать, есть же куча Bitmap Fonts генераторов. Например: http://www.gamedev.ru/projects/forum/?id=152527

bugway 01.07.2014 05:48

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от moka (Сообщение 283629)
Зачем рисовать, есть же куча Bitmap Fonts генераторов.

Точно! Генераторов оказалась куча. Но все какие-то громоздкие. Накидать свой генератор на скорую руку - оказалось значительно быстрее, чем разбираться с готовыми. :)

А теперь несколько вопросов. Может кто подскажет правильное направление.


1. По поводу использования буфера(ов) вертексов. Написал класс меша и фабрику этого класса. При создании экземпляра класса меша создается динамический массив вертексов в RAM. Имеются функции создания примитивов - кубов, пирамид и т.п. Во многих источниках рекомендуют использовать один большой вертексный буфер. Возник вопрос как правильно организовать менеджмент вертексов и этого большого вертексного буфера. Сейчас поясню:

есть такие варианты:
1) сделать отдельную функцию, которая склеит вертексы всех созданных экземпляров мешей и запишет их в VB.
2) в коде меша при изменении вертексов (например в конце метода LoadFromFile) отправлять в конец VB порцию вертексов только текущего меша.
3) для каждого экземпляра меша создавать свой уникальный VB.

Очевидные проблемы:
В первом варианте мы фактически при изменении одного меша вынуждены пересобирать весь VB, но зато точно знаем его размер и не используем лишнего места в VB.
Во втором варианте мы не можем предугадать, сколько еще объектов нужно будет загрузить в VB, поэтому его размер мы не знаем. Можно конечно сделать заведомо больший VB, чем нужно, но тут 2 проблемы: фрагментация VB и пересоздание буфера если закончится место.
В третьем варианте мы скорее всего теряем в производительности, т.к. делаем кучу вызовов SetStreamSource, но получаем значительное удобство.

Насколько справедливо вышесказанное? Кто как выкручивался?

Mr_F_ 01.07.2014 13:09

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

В первом варианте мы фактически при изменении одного меша вынуждены пересобирать весь VB, но зато точно знаем его размер и не используем лишнего места в VB.
а какое именно изменение? изменение существующих вертов не проблема, добавление новых вертексов в рантайме - нафиг нужно.

L-ee-X 08.09.2014 22:15

Ответ: Пишем 3D движок - замену Xors3D
 
Движок умер так и не успев появиться на свет, печально :-D

KCEPOKC 08.09.2014 23:19

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от L-ee-X (Сообщение 286262)
Движок умер так и не успев появиться на свет, печально :-D

Не умер. Поверь.

L-ee-X 09.03.2015 19:37

Ответ: Пишем 3D движок - замену Xors3D
 
Разработчики в отпуске? :-D

bugway 11.03.2015 15:14

Ответ: Пишем 3D движок - замену Xors3D
 
Разработчики в работе :)

На текущий момент работаю над несколькими проектами. GeoVoxium3D перевожу на DX11. Возможно скоро придется переходить уже на DX12. Ветку движка с DX9 - забросил. (может зря - не знаю)

От своей первоначальной идеи сделать minecraft-подобную игру - не отказался. Наоборот, вроде все улеглось по полочкам. В качестве эталона выбраны новинки из STEAM: это Rising World и StaudSoft`s Synthetic world.

Продолжаю эксперименты со шлемами виртуальной реальности. Скоро придет экран для прототипа с разрешением 2560х1440. Буду экспериментировать :)

Очень хочется найти 2-3 энтузиастов, чтобы какой-нибудь проект все-таки довести до релиза. Если кто желает помочь, присоединиться, внести предложения, конструктивно покритиковать - милости прошу :)

Недавно согрешил - зарегистрировался ВКонтакте :) Попробую анонсы проектов там выложить. Может все-таки единомышленники найдутся.

Randomize 11.03.2015 15:24

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 294020)
Очень хочется найти 2-3 энтузиастов, чтобы какой-нибудь проект все-таки довести до релиза. Если кто желает помочь, присоединиться, внести предложения, конструктивно покритиковать - милости прошу :)

Для такого требуется некий Quick Start Guide с пошаговой инструкцией как начать и справочник по движку.

L-ee-X 22.06.2016 16:47

Ответ: Пишем 3D движок - замену Xors3D
 
Как дела обстоят с разработкой движка? :)

Tiranas 12.11.2017 20:42

Ответ: Пишем 3D движок - замену Xors3D
 
Так чего с движком, будит или нет?

Randomize 12.11.2017 20:55

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Tiranas (Сообщение 314329)
Так чего с движком, будит или нет?

Ни будит)))0)нуль))

bugway 17.11.2017 23:34

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Randomize (Сообщение 314330)
Ни будит)))0)нуль))

Слишком категорично. Если интересно, во что трансформировался проект, могу подробно описать. Некоторые обращались в личку и в курсе о результатах.

L-ee-X 18.11.2017 06:40

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 314376)
Слишком категорично. Если интересно, во что трансформировался проект, могу подробно описать. Некоторые обращались в личку и в курсе о результатах.

Просвети всех :) зачем каждому то в личку тебе писать. Мне тоже интересно, что и как там продвигается.

Tiranas 21.11.2017 13:35

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от L-ee-X (Сообщение 314377)
Просвети всех :) зачем каждому то в личку тебе писать. Мне тоже интересно, что и как там продвигается.

Вот именно. Накидал бы ссылок сюда, чтоб глянуть можно было.
А то интрига на 21 страницу и стоп точка с выбросом.


Часовой пояс GMT +4, время: 14:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot