Pull to refresh

Comments 27

Прям руки зачесались покопаться.
Теперь понятно печему у вас ник такой =)
З.Ы. За статью спасибо.
BasicEffect — воистину мощная штука, знаю не по наслышке.
Точно. Не смотря на то что Basic'ом называется :)
Боже какой маразм
В то время как Айфон и Андроид полностъю поддерживает GL ES 2.0 с GLSL — Майкрософт пошла своим путём.
Несомненно разработчики с большим энтузиазмом воспримут идею портирования с GL2 на это.
Зная МС можно быть уверенным что в следующей версии СДК они этот позор вырежут и рендер придётся переделывать заново как это было когда-то с D3D-RM.

Действительно, пока конкуренты реализовывают поддержку промышленных стандартов? Microsoft придумывает свой велосипед.
UFO landed and left these words here
Т.е. там где DirectX нет.

А если бы он был под эти платформы — выдержал бы OpenGL? Конкуренцию?
Linux, OS X, Android, iOS + Sony PlayStation + WebGL + NaCL

Конкуренции не было-бы. Все использовали-бы только OpenGL. Почему — см список выше.

Для справки — МС смогла более-менее успешно внедрить DX в РС-играх только с выходом XBox-а. До этого отцы индустрии типа Кармака и Свини только смеялись над убогими попытками МС изобрести свой собственный велосипед.
Джон Кармак: Direct3D сейчас лучше, чем OpenGL:

В разговоре с ресурсом Bit-tech для материала журнала Custom PC о будущем OpenGL в играх для ПК Джон Кармак (John Carmack), основатель жанра боевиков от первого лица, заявил, что сегодня Direct3D, по его мнению, является довольно неплохим API. Он также добавил, что «Microsoft имела мужество продолжать вносить значительные несовместимые изменения для улучшения API, тогда как OpenGL оставался позади из соображений совместимости». По его мнению, Direct3D более эффективно обрабатывает многопоточные вычисления и с каждой новой версией становится лучше.

www.3dnews.ru/news/dzhon-karmak-direct3d-seychas-luchshe-chem-opengl/

www.bit-tech.net/news/gaming/2011/03/11/carmack-directx-better-opengl/

Это как-бы естесственно что в _своей_ операционной системе и на _своей_ консоли за 10 лет можно допилить свой АПИ чтобы он стал где-то лучше предшественника. Причем в области (разработка игр) для которой предшественник никогда специально не разрабатывался и конкурировать не собирался.

Кстати насчет «с каждой новой версией становится лучше» — это Кармак так пошутил тонко. DX эту тенденцию демонстрирует стабильно начиная с первой версии. В основном за счет заимствования чужих идей. Наконец-то появились свои. Ура.
Везде куда не дотянулись руки МС. Даже на 7й винде не смотря на то что МС подгадила как могла.

Как программист долгое время работавший с обоими АПИ и портировавшим рендер в обе стороны — могу сказать что GL2 реализован _намного_ грамотнее чем DX8/9/10. То-же самое можно сказать о GL1 и всех предидущих версиях DX — когда МС могли позволить себе от версии к версии делать СДК не совместимым с предидущей, менять сценарии оптимизирования быстродействия и просто выкидывать свои-же СДК как было когда-то с D3D IM/RM.

Два простых примера для иллюстрации каким местом придумывали архитектуру HLSL и каким реализовывали

(Немного теории — много движков использует принцип ubershader-ов т.е. когда есть большой вертексный/пиксельный шейдер в котором блоки включаются/отключаются макросами в зависимости от материала (есть бамп или нет, используется скелетная анимация или нет, есть спекулярная текстура или нет, один источник света или два или три и т.п.). Соотв разные вариации компиляции вертексных и пиксельных шейдеров линкуются друг с другом при создания программы для рендера конкретного материала. По уму — движок на загрузке компилирует N вариантов вертексного и M пиксельного шейдера с разными дефайнами и затем линкует в нужных комбинациях друг с другом. Это как работает в GL2, но в DX....)

1. Предварительная компиляция шейдеров невозможна. Только вместе с линковкой программы — когда оба шейдера компилируются и сразу линкуются. Соотв — время загрузки увеличивается в десятки раз.

2. Компилятор HLSL не поддерживает условную компиляцию. Это вообще за гранью. Первое что пришлось сделать при портировании движка с GL на DX — писать свой препроцессор для #if, #ifdef, #else, #elif, #endif

Какой вывод? Люди которые это разрабатывают DX весьма далеки от его применения, в отличии от авторов GL.

Что получилось в итоге с Windows Phone — мейджорам индустрии не составит труда посадить отдел программистов на портирование с айфона или с андроида, а большинство Инди — посмотрят и плюнут потому что выкидывать кучу времени на занятие ерундой они не могут (если проекты не совсем примитивные)

UFO landed and left these words here
Да, читал. Хорошая статъя, но про разлельную компиляцию и линковку там всё перепутали — в GL она есть, в DX-нет. Если первые реализации в драйверах были кривые — это давно исправлено и забыто. Про уровни несовместимости — в GL такой проблемы не было никогда.

Несколько фактов которые подтвержаются в статъе:

1. Всё прогрессивное в DX после отказа от 3й версии — стырено из GL — RenderState, TextureStageState, DrawPrimitive (кстати архитектура 3й — была заимствована у Voodoo Glide)

2. GLSL можно критиковать за баги в первых реализациях драйверов (которые давно исправлены), но не за архитектуру. HLSL появился намного _позже_ и как в пред. пункте — МС опять стырил и принцип и название. И что важно — только с появлением высокоуровневых шейдеров они начали использоваться по-настоящему массово. И ещё — их появление было не избежно т.к. прогресс GPU делает асм-программироване не оптимальным. 3DLabs это поняли а МС — нет.

3. Не смотря на все косяки ARB — OpenGL и первый и второй принят вендорами которые мягко говоря не отличаются здравомыслием во многих других вопросах. Принят потому что они понимают — OpenGL это обеспечение лёгкости входа разработчиков и гарантия переносимости с других платформ. Эппл, Гугль и Сони это понимают, а МС — нет.

Причем сейчас речь идёт не о портировании со своей РС платформы на свою-же консоль превосходящую конкурентов — как это было при появлении Хбох-а, а о портировании с _чужих_ мобильных платформ на свою мобильную платформу, которая _абсолютно_ _ничем_ не превосходит конкурентов и даже уступает.

Портирование на Хбох подкупало простотой разработчиков у которых уже были PC-проекты на DX, портирование на Windows Phone — просто вводит в ступор. Можно было ожидать от МС некоей лайт-версии XBox SDK на С++ и это мог-бы быть Epic Win, но никак не XNA с этими бредовыми эффектами.
Хватит жить в альтернативой вселенной.

HLSL был разработан совместно с nVidia и скорее похож на Cg, который был еще до GLSL.

ARB — давно нет, а есть Khronos.

Apple и Sony — делают все, чтобы затруднить портирование кода со своих платформ, особенно удачно вы упомянули Sony, которая обложила свою реализацию OpenGL десятком проприетарных расширений. Про Apple c её велосипедным Object C тоже наверно упоминать не стоит.
«Apple и Sony — делают все, чтобы затруднить портирование кода со своих платформ, особенно удачно вы упомянули Sony, которая обложила свою реализацию OpenGL десятком проприетарных расширений. Про Apple c её велосипедным Object C тоже наверно упоминать не стоит. „

Вам вообще писать сюда не стоило если это все ваши познания о Apple и Sony.
Для расширения вашего кругозора — Apple со своим “велосипедным Object C» (эта остроумная метафора рассказала о вашем уровне явно больше чем вы хотели) — не делает никаких препятсвий для работы на С/С++ в одном проекте с Objective-C (да, пишется Objective-C а не Object-C). Более того можно получить весь доступ к системе как через Objective-C (Cocoa) так и через C (Carbon). Не позорьтесь.
>Вам вообще писать сюда не стоило если это все ваши познания о Apple и Sony.

Про Apple прежде всего разговор об iOS, давайте расскажите как можно без велосипедов писать на С++, полностью исключив ObjectiveC из кода, с OsX все проще, так как здесь Apple заинтересована в портировании по с других платформ, точнее даже с одной платформы. Интересно, почему у проектов типа Cocos2d разная кодовая база для iOs и Android?

Может быть покажете, как написать кросcплатформенный код с помощью PSGL? Расскажите как написать шейдер на GLSL для PS3. Ну и сколько надо заплатить Sony, чтобы получить полноценный SDK.

Товарищ, вы бы хотя бы документацию по HLSL прочитали, препроцессор там был с бородатых времен и предварительная компиляция так же возможно с помощью отдельного компилятора шейдеров, который входит в состав SDK со времен Direct3D9.
То есть вы или эпичный неуч, неспособный открыть документацию по SDK, или же не менее эпичный тролль.
Товарищь вы бы прочитали внимательно ещё раз топик на который пытались ответить.
Если одного раза будет мало — попробуйте ещё раз.
Если совсем не поможет — займитесь чем-то более полезным чем писание ерунды на форуме.
В данный момент мы обсуждаем ваше незнание темы о которой вы пытаетесь рассуждать. В частности вопросы Direct3D API и HLSL.
Когда же они все договорятся о стандартах то, а?(((
Зачем кому-то играть по правилам других вопреки своим желаниям(выгоде)?
Всё что показано шейдерами назвать можно лишь теоретически, т.к. формально оно не требует ничего выше FFP. Я искренне надеюсь, что это лишь ограничения XNA, ибо iOS / Android поддерживают до 8 текстур и полноценную Shader Model 2.0.
Я не силен в программировании, но мои друзья, широко известные в узких кругах 3D-игр для мобильных платформ говорили, что пока не будет выпущено NDK серьезные игры для платформы делать не получится.
Дык, кому надо всё с нуля на C# переписывать. С другой стороны может будут портировать игры с XBLIG.
Only those users with full accounts are able to leave comments. Log in, please.