love5an: (Default)
Direct3D Workshop теперь полноправная SxS assembly.

То есть, в том числе может устанавливаться в директорию кэша SxS как shared assembly.

Вот я даже сделал MSI-инсталлятор:
https://github.com/downloads/Lovesan/D3DWorkshop/D3DW-0.1.1.1.msi
(и в принципе его любой желающий может собрать из сорцов на гитхабе, при условии наличия у него VS хотя бы C++ express версии, Windows SDK, и WiX версии 3.0 и выше)

SxS(оно же Component Servicing Infrastructure (CSI)) это инфраструктура Windows навроде .NET GAC, но для нейтив библиотек и приложений. По факту, это практически полный эквивалент GAC, у них даже API похожи( http://msdn.microsoft.com/en-us/library/windows/desktop/aa376204(v=vs.85).aspx )
SxS это очень круто, решает многие проблемы с версиями библиотек и т.п.

Из недостатков(как я уже писал в juck) - линуксоиды им, по какой-то странной причине, пользоваться не умеют. Ну и соответственно, опенсорс-библиотеки с корнями в линуксах и т.п. подвержены проблеме DLL hell и сопутствующему(впрочем они этому и на родных платформах подвержены, гг).

Впрочем, создание SxS assembly это не такая тривиальная вещь, какой могла бы быть. Надо будет написать статейку на эту тему.

Кстати, библиотека зависит, кроме системных стандартных вещей, еще и от от D3DCompiler_43.dll, для компиляции шейдеров. Я думаю от этой зависимости в будущем избавиться, придумав бинарный формат для "эффектов", но пока что эту dll можно взять из MS DirectX SDK(ну или Windows SDK, если говорить о SDK для Win8).
love5an: (Default)
Я тут на днях начал писать код для мини-фреймворка для 2D и 3D графики, над Direct3D+Direct2D

Потому что почувствовал, что просто надстройки(ну я тут выкладыл сорцы библиотечки D3DU) чтобы скрыть всю сложность D3D не хватает, и надо его полностью скрыть за слоем чего-то удобноваримого.

Ну поэтому начал писать сабж.
Интерфейс библиотеки - одна функция, D3DWCreateWindow, а все остальное - COM-интерфейсы.
https://github.com/Lovesan/D3DWorkshop/blob/master/D3DWorkshop/D3DW.h
То есть, использовать можно будет и из C#(кстати для .NET планирую специальную обертку написать) и из лиспа какого-нибудь.

Основная фича такая: крайне сильно упрощен интерфейс нижележащего API, а точнее трех: под капотом интегрированы Direct3D 11, Direct3D 10.1 и Direct2D, т.е. 2D-графика и 3D-графика с общим интерфейсом. Для 2D пока сделано довольно мало, сразу скажу, фактически одна функция, Clear. Но в ближайшем будущем думаю привинтить основную функциональность Direct2D.

Несмотря на то что под капотом технологии MS, наружу они не торчат(кроме lightweight COM), то есть, в теории это дело можно будет перенести и под OpenGL+Cairo(или чем там щас в 2D рисуют).

Вот вобщем сорцы, и они будут пополняться:
https://github.com/Lovesan/D3DWorkshop

На первых порах следить за обратной совместимостью особо не обещаю, но в будущем думаю с этим будет получше.



Примеров там на гитхабе пока довольно мало, а точнее один, но в ближайшее время добавлю еще
love5an: (Default)
https://github.com/Lovesan/D3DU

Добавил новый пример - кубик с фракталом Мандельброта на гранях, который рисуется пиксельными шейдерами(если поставить сильно большой MAX_ITERS в шейдерах, дико тормозит -- но, все-равно, отрисовка на порядки быстрее, чем на процессоре(даже если использовать SSE) -- на моей не сильно новой видеокарте например при 80 итерациях вполне себе живое и двигающееся изображение -- а если ту же фигню рисовать например через GDI+, то оно будет тормозить просто невозможно. Современные GPU таки великая вещь.).
https://github.com/Lovesan/D3DU/tree/master/MandelbrotCube
картинка )

Также, добавил полезный интерфейс ID3DUFloatAnimation (сигнатуру практически украл из WPF, угу)
Read more... )

Также, добавил три функции-обертки над D3DCompile:
Read more... )

Так как у всего этого, как я уже говорил, lightweight-COM API, то использовать можно из любого языка, который способен вызывать сишный код.

Вообще, я это для стартапа пишу, но почему бы не поделиться - все-таки это не рокет сайнс, и не так уж сложно в реализации, чтобы скрывать сорцы.

D3DU

Feb. 16th, 2012 10:43 pm
love5an: (Default)
Кстати, я тут начал писать небольшую библиотеку-обертку над Direct3D 10/11

На плюсцах, но с COM-интерфейсом(т.е. использовать можно хоть из лиспа).

Может, кому еще полезно будет. Сорцы вот тут:
https://github.com/Lovesan/D3DU
Там есть и пример - в директории Triangle.
love5an: (Default)
Написал первую часть статьи-туториала про D3D11 для хабра. Получил за нее инвайт, кстати.
http://habrahabr.ru/blogs/3d_graphics/129166/
love5an: (Default)
Начал потихоньку допиливать LDX(я его буду использовать в Reactivity для рендеринга, а также в моем стартапе), и вот на днях приделал интерфейс к компилятору HLSL(d3dcompiler_43.dll).

Под катом пример использования:
Read more... )

DXGI

Mar. 13th, 2011 11:32 pm
love5an: (Default)
Начал работу над LDX.

Вот буквально сегодня накатал биндинги к DXGI. Накатал, надо сказать, очень быстро, буквально за пару часов.
А все почему? Макросы.

Вот так выглядит декларация интерфейса IDXGISwapChain в лиспе:
Read more... )

А вот так, например, можно узнать название своей видеокарты(первой из установленных, если их больше одной):

(string-trim '(#\space #\null)
(adapter-description (description (enum-adapters (create-dxgi-factory)))))

У меня на ноуте вычисляется в "ATI Mobility Radeon HD 5470", например.
Как видно, о release я не особо беспокоюсь - потому как COM-интерфейсы у меня привязаны к GC.

Profile

love5an: (Default)
Dmitry Ignatiev

December 2016

S M T W T F S
    123
45678910
11121314 151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2017 02:32 am
Powered by Dreamwidth Studios