Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/50: Рейтинг темы: голосов - 50, средняя оценка - 4.56
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515

Реализовать DirectX. Или разобраться в том, как программисту наладить работу DirectX у клиента под Windows

28.12.2016, 08:32. Показов 11500. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Программисты.

Заплачу за решение моего вопроса! 25-50 тыс. рублей. 50 тыс. рублей заплачу, если полностью решите мой вопрос. Занимаюсь коммерцией и собираюсь продавать сие программу под DirectX. Но вот не могу наладить 100% работу под Directx на других ПК под Windows. Мне нужно чтобы программа работала на windows у клиента без проблем с ошибками.

Озадачился следующим вопросом: Хочу реализовать DirectX на любой платформе. Наверно на visual studio c++ или C# не важно. Главное, гарантия работоспособности работы ПК у клиента.

Пробовал реализовывать DirectX на visual studio с++ и C#. Пробовал OpenGl на борланд-делфи.
И скажу Вам получалось и команды работали. Но как дело доходило до других компьютеров EXE файлы отказываются работать. То библиотеки не хватает, то просто не запускается по неизвестной ошибке. Как решать эти проблемы не пойму. Просветите.

1. Дайте некоторый набор правил для того, чтобы наладить процесc по подключению нужных библиотек.
2. Настройки под DirectX.
3. Может есть какие-то утилиты для отслеживания ошибок в программах. Где будет писаться подробности об ошибках.
4. Что нужно сделать на стороне клиента, чтобы запустить этот проблемный DirectX
5. Не откажусь от минимально готового исходника под DirectX. Нужно, чтобы был пустой проект в котором был реализован только DirectX без всяких дополнительных файлов и движков. Хочется на первых парах понять в чем минимальный смысл DirectX. То есть окно рисования и нарисовано одна полоска с кружком.
6. Скажу что покупать готовый софт реализации за 50-100 тыс. рублей жаба давит. Что-нибудь на пиратских софтах предложить. Пробовал unity3d и unreal engine 4. Не работают Exe файлы на стороне клиента.

Основная причина решения: Это то, что на стороне клиента эти EXE файлы не работают и почему?

В общем: Предложите готовый набор программиста для решения работы под DirectX.

Добавлено через 1 минуту
Да кстати: Нужно чтобы EXE файлы работали начиная с Windows 7. До windows 10. Клиенты всякие попадаются.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.12.2016, 08:32
Ответы с готовыми решениями:

Delphi и DirectX или как ускорить работу с изображениями
Написал программу для штампования кадров - штампует 0,5 кадра в секунду размерами 3840х2160. А Fractal Extreme Movie Player может делать...

XNA является дополнением DirectX или это полноценная альтернатива DirectX не зависящая от него
Предлагаю в этой теме задавать общие вопросы по XNA. Может вопросы покажутся глупыми, но все же: 1. Работать с XNA можно только в...

Как начать работу с DirectX (С#)
1.Когда я VS.Net в реферансах хотел подключить .Net компонент Microsoft.DirectX то ничего не получилось, потому как его там просто не...

73
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
01.01.2017, 14:49
Студворк — интернет-сервис помощи студентам
Нужно ещё заметить, что 3D в WPF можно реализовывать, как с помощью XAML кода (как у меня выше), так и с помощью C# кода - это дело вкуса.
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
01.01.2017, 15:22  [ТС]
8Observer8, ответьте на такой вопрос более развернуто. В чем сложность усвоения Directx. Вы упомянули, что трудно изучить directx и уйдут просто годы обучения. Я что-то в это не верю. Я за два дня реализовал маленькое движение фигуры. Разобрал пока примерно структуру всего этого рисования. Остается только детальность. С матрицами понятно. Геометрию понимаю. В свое время разбирал высшую математику. Разбирал тригонометрию. Понимаю, что для реальности нужно что-то делать с пикселями. Я это чувствую, но пока еще не дошел до сути.

Еще вопрос: Насколько сильно может отличатся по скорости WPF графика от Directx? Ну хотя-бы примерно на ваш взгляд. У меня ощущение, что разница небольшая. Разработчики WPF наверняка сделали такую же библиотеку под directx.

Я все же пока решил делать приложение под WPF. А потом когда картина и движок будут готовы начну тестировать Unity 3D. А с# код передать в unity уже не проблема.

Добавлено через 18 минут
В вашем исходнике что делает файл?: 3DTools.dll

Добавлено через 3 минуты
Я думаю, что если у пользователя стоит .NET версии 4.0 (а на Win7 он должен стоять поумолчанию), то WPF 3D приложение должно запускаться.
На днях тестил. Слава богу имею аж 4ПК. На windows 7 по умолчание нет net.framework 4.0. Как раз тестил WPF приложение.
И вообще все эти net.framework - ки могут быть установлены с другими программами.

Добавлено через 4 минуты
Хочется у Вас еще спросить программу (установщик программ). Которой Вы пользуетесь. Наверняка вы уже что-то знаете о таких установщиках. С которыми удобно работать и много вспомогательных функций.
Также не откажусь от информации, как создавать самому эти установщики и засовывать в EXE файл куча других файлов.
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
01.01.2017, 20:42
Цитата Сообщение от infobos Посмотреть сообщение
ответьте на такой вопрос более развернуто. В чем сложность усвоения Directx. Вы упомянули, что трудно изучить directx и уйдут просто годы обучения. Я что-то в это не верю. Я за два дня реализовал маленькое движение фигуры.
Чтобы понять сложность усвоения голого DirectX в сравнении с движками нужно рассмотреть на конкретном примере.

Пусть задача будет очень простая:
- предоставить пользователю возможность создать объект: куб, цилиндр, сфера
- дать возможность выбрать кнопками цвет: красный, зелёный, синий
- качестве решения предоставить exe

Чтобы сделать это в Unity (который использует в своих недрах DirectX) нужно совершить минимум действий и написать минимум кода.

На голом DirectX + WinAPI - это потребует больше действий и кода. На WPF поменьше. В общем на Unity, нужно намногое меньше времени на обучение и реализацию.
Миниатюры
Реализовать DirectX. Или разобраться в том, как программисту наладить работу DirectX у клиента под Windows  
Вложения
Тип файла: rar Objects (исходники).rar (1.58 Мб, 3 просмотров)
Тип файла: rar Objects (exe).part1.rar (8.00 Мб, 3 просмотров)
Тип файла: rar Objects (exe).part2.rar (4.31 Мб, 3 просмотров)
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
02.01.2017, 06:30  [ТС]
Чтобы понять сложность усвоения голого DirectX в сравнении с движками нужно рассмотреть на конкретном примере.

Пусть задача будет очень простая:
- предоставить пользователю возможность создать объект: куб, цилиндр, сфера
- дать возможность выбрать кнопками цвет: красный, зелёный, синий
- качестве решения предоставить exe

Чтобы сделать это в Unity (который использует в своих недрах DirectX) нужно совершить минимум действий и написать минимум кода.

На голом DirectX + WinAPI - это потребует больше действий и кода. На WPF поменьше. В общем на Unity, нужно намногое меньше времени на обучение и реализацию.
Ну это же не корректный ответ. Ясно что быстрее реализовать в unity. Я же не такой ответ ожидал. Думал что Вы через свой опыт обозначите, какие-то нюансы именно в освоение dirrectx. Почему так долго. Ну Вы тут вообще говоря не правы, что уйдут годы на освоение Directx c++. Можно скачать готовый движок под Directx c++ и просто как функцию его использовать ее для рисования. Мне потратить небольшое время и создать удобный метод для ввода вершин и готово чудо работа под Directx. В общем считаю, что Вы не правы утверждая, что уйдут годы обучения и создания приложения под Directx c++.

Запустил ваш проект на unity. И уже заметил неприятность того, что unity готовит файл слежки своих проектов. И следит за вашими проектами как вы их распространяете. А это уж простите меня не устраивает. Мой файрвол мне об этом сообщает.

С Unreal Engine 4 такая же проблема. Они шпионят за всеми проектами. Ведут статистику распространения проектов созданные на их движках.
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
02.01.2017, 12:07
Как вы наверное заметили у меня в проекте кроме рассеянного (или диффузного - diffuse) используется ещё бликовое (specular) освещение. А ещё для стен и земли используются карты нормалей.

Математическая модель реализации этих освещений будет одинаковая для DirectX и OpenGL. Реализуются эти освещения в шейдерах.

Так выгдялит модель рассеянного (diffuse) освещения реализованная на языке GLSL:

Кликните здесь для просмотра всего текста
Вертекстный шейдер:
glSlang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
attribute vec4 a_Position;
attribute vec4 a_Color;
attribute vec4 a_Normal;       // Normal
uniform mat4 u_MvpMatrix;
uniform vec3 u_LightColor;     // Light color
uniform vec3 u_LightDirection; // Light direction (in the world coordinate, normalized)
varying vec4 v_Color;
 
void main()
{
    gl_Position = u_MvpMatrix * a_Position;
 
    // Make the length of the normal 1.0
    vec3 normal = normalize(a_Normal.xyz);
 
    // Dot product of the light direction and the orientation of a surface (the normal)
    float nDotL = max(dot(u_LightDirection, normal), 0.0);
 
    // Calculate the color due to diffuse reflection
    vec3 diffuse = u_LightColor * a_Color.rgb * nDotL;
    v_Color = vec4(diffuse, a_Color.a);
}
Фрагментный шейдер:
glSlang
1
2
3
4
5
6
7
8
9
#ifdef GL_ES
precision mediump float;
#endif
varying vec4 v_Color;
 
void main()
{
    gl_FragColor = v_Color;
}


А так модель рассеянного освещения:

Кликните здесь для просмотра всего текста
Вертекстный шейдер:

glSlang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uniform mat4 u_perspectiveMatrix;
uniform mat4 u_modelMatrix;
uniform mat4 u_viewMatrix;
 
attribute vec4 a_Position;
attribute vec3 a_Normal;
 
varying vec4 v_Position;
varying vec3 v_Normal;
 
void main()
{
    mat4 modelViewMatrix = u_viewMatrix * u_modelMatrix;
    v_Position = modelViewMatrix * a_Position;
    gl_Position = u_perspectiveMatrix * v_Position;
    v_Normal = normalize( mat3(modelViewMatrix) * a_Normal);
}
Фрагментный шейдер:

glSlang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifdef GL_ES
precision mediump float;
#endif
uniform mat4 u_fViewMatrix;
uniform vec3 u_lightPosition;
 
varying vec4 v_Position;
varying vec3 v_Normal;
void main()
{
    vec3 normal = normalize(v_Normal);
    vec3 lightPosition = vec3(u_fViewMatrix * vec4(u_lightPosition, 1) - v_Position);
    vec3 lightDir = normalize(lightPosition);
    float lightDist = length(lightPosition);
 
    float specular = 0.0;
    float d = max(dot(v_Normal, lightDir), 0.0);
    if (d > 0.0)
    {
        vec3 viewVec = vec3(0,0,1.0);
        vec3 reflectVec = reflect(-lightDir, normal);
        specular = pow(max(dot(reflectVec, viewVec), 0.0), 120.0);
    }
    gl_FragColor.rgb = vec3(0.1,0.1,0.1) + vec3(0.4, 0.4, 0.4) * d + specular;
    gl_FragColor.a = 1.0;
}


Кроме этого нужно добавить поддержку текстур и реализовать симуляцию неровностей с помощью Normal Map на шейдерах.

Нужно будет разобраться, как выводятся с нуля матрицы трансформаций: перемещение, вращение, масштабирование. Потому что без этого понимания не будет понятно, что такое матрицы: вида, модели, проекции, а так же их комбинации. Для понимания этого нужно много труда и времени. По крайней мере мне, хотя я изучал в универе линейную алгебру, но придётся самостоятельно производить выводы этих матриц с карандашом и бумагой, иначе нечего не поймёте.

Если будете изучать DirectX по книгам, то заметите, что все они по C++ и WinAPI и чтобы понимать примеры придётся много прочитать документации по WinAPI и DirectX в MSDN:
Вы потом сами убедитесь, сколько нужно много времени, чтобы научиться создавать более или менее приличную графику и анимацию на голом DirectX, которая будет сравнима с тем что можно делать в Unity или Unreal, создавая продукты, не отвлекаясь на низкоуровневую реализацию. Тем более, что в своём движке можно сделать такие хитрые ошибки, что может уйти очень много времени на их поиск и устранение. А в движке большиство ошибок найдено, а если и попадаются, то можно сообщить с службу поддержки, которая очень быстро выпустит патч. Но всё таки свои небольшие движки нужно учиться делать, чтобы понимать, как всё работает. Я пишу свой 2D игровой движок на WebGL на основе движка из этой книги. Поэтому это хорошо, чтобы вы так нацелены изучать DirectX. Я тоже начал изучать HLSL, так как мне нужно научиться писать качественные шейдеры для Unity.

Добавлено через 19 минут
Цитата Сообщение от infobos Посмотреть сообщение
Запустил ваш проект на unity. И уже заметил неприятность того, что unity готовит файл слежки своих проектов. И следит за вашими проектами как вы их распространяете. А это уж простите меня не устраивает. Мой файрвол мне об этом сообщает.
С Unreal Engine 4 такая же проблема. Они шпионят за всеми проектами. Ведут статистику распространения проектов созданные на их движках.
В CryEngine 5 такая же история. А чем они вам могут навредить?
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
02.01.2017, 15:22  [ТС]
А чем они вам могут навредить?
Пока не знаю. Но вообще говоря боюсь, что именно таким простым способом и могут быть сломаны коммерческие программы. И выложены в бесплатные доступы. В готовом коде проще ломать программы чем через дизасемблирование.
Я вообще то продаю программы и мне очень важно максимально защититься от парсинга моего кода.

В вашем исходнике что делает файл 3Dtools.dll дайте исходный код dll, если он ваш. Больно интересно что это. Меня не устраивает такая непонятка на ссылающийся файл 3Dtools.dll
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
02.01.2017, 16:06
Цитата Сообщение от infobos Посмотреть сообщение
В вашем исходнике что делает файл 3Dtools.dll дайте исходный код dll, если он ваш. Больно интересно что это. Меня не устраивает такая непонятка на ссылающийся файл 3Dtools.dll
В этой библиотеки вспомогательные методы, которые вращают объект мышкой и рисуют XYZ линии: https://3dtools.codeplex.com/

Цитата Сообщение от infobos Посмотреть сообщение
Пока не знаю. Но вообще говоря боюсь, что именно таким простым способом и могут быть сломаны коммерческие программы. И выложены в бесплатные доступы. В готовом коде проще ломать программы чем через дизасемблирование.
Я вообще то продаю программы и мне очень важно максимально защититься от парсинга моего кода.
Деле в том, что разработчики этих движков имеют очень высокую репутацию. Если бы был хотя бы один такой случай, то это бы очень сильно ударило по их репутации. Если брать Unity, то у него исходники очень дорого стоят. Да, нельзя просто скачать, проверить исходники и собрать. А вот для CryEngine 5 и UE 4 исходники полностью отрытые. Вы можете скомпилировать самостоятельно. Не думаю, что гуру, кто делает свои движки на основе этих, не могли раскрыть злобный умысла этих компаний. Хотя может быть они выкладывают одни исходники, а собранные движки из других. Но в любом случае, если недоверяете, то можно скомпилировать. Так же можно было бы недоверять Microsoft. Может кто-то и не доверяет и поэтому использует Linux, зная что в его коде ничего такого не вшито. Я этим компаниям полностью доверяю. Огромное количество коммерческих приложений на их инструментах. Если взвесить огромную скорость разработки, надёжность работы приложения, красоту графики, производительность, обновления, кроссплатформенность, большое сообщество, наличие вакансий и специалистов, разные бесплатные полезные сервисы, Asset Store, и ещё массу всего реализованного в движках, то понятно почему так много компаний не пишут свой движок с нуля.

По поводу реалистичности, обратите внимание на эти два иструмента, они сейчас лидеры по мощности и простоте использования:
Substance Painter 2
Substance Designer

Substance Painter 2 Release Trailer
Кликните здесь для просмотра всего текста
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
02.01.2017, 16:24  [ТС]
В этой библиотеки вспомогательные методы, которые вращают объект мышкой и рисуют XYZ линии: https://3dtools.codeplex.com/
А можете кинуть книгу для обучения по командам из библиотеки?
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
02.01.2017, 16:32
Цитата Сообщение от infobos Посмотреть сообщение
А можете кинуть книгу для обучения по командам из библиотеки?
Это очень простая библиотека. В ней только две полезные вещи.

Как в моём примере, для вращения мышкой:
XML
1
2
3
4
            <!--tools:TrackballDecorator - класс предназначенный для вращения
сцены мышкой (находится в библиотеке 3DTools.dll)-->
            <tools:TrackballDecorator>
            </tools:TrackballDecorator>
И оси:
XML
1
2
3
4
5
                    <!--Для отладки используем объект ScreenSpaceLines3D, который отображает оси
                Взят из библиотеки 3DTools-->
                    <tools:ScreenSpaceLines3D Points="0,-20,0 0,20,0" Thickness="1" Color="Green" />
                    <tools:ScreenSpaceLines3D Points="-20,0,0 20,0,0" Thickness="1" Color="Red" />
                    <tools:ScreenSpaceLines3D Points="0,0,-20 0,0,20" Thickness="1" Color="Blue" />
Больше ничего в этой библиотеки нет полезного.
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
03.01.2017, 18:34  [ТС]
Я уже третий день изучаю WinApi код. Создал окно, кнопки, меню, события и тому подобное. И скажу, что раньше использовал конструктор и прочую лабуду.
Теперь понял лучше один раз изучить WinApi чтобы все понять как работает.
На WinApi Можно сделать столько всякого, на что конструкторы не способны.
Еще понял одну мысль. На WinApi можно сразу писать возможности, которые тебе нужны. А на конструкторах нужно изучать конструктор. В общем когда знаешь WinApi понятнее становятся все конструкторы.

WinApi это мощный инструмент. Нисколько не жалею, что начал его изучать. Там можно столько всего динамического забацать. Даже показался проще в плане того, что имея некоторые команды, появляются больше простых возможностей как реализовать некоторый алгоритм, на которые конструкторы не могут дать ответ.
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
03.01.2017, 19:45
По поводу WinAPI - не всё так однозначно. На сегодня дела обстоят так, что если мы создаём продукты только для Windows, то мы упускаем большое количество покупателей, кто использует Mac или Linux, а так же мобильных пользователей Android и iOS. Если реализовывать с нуля для каждой платформы самому, то будет уходить много времени. С другой стороны можно ограничиться только Windows, ведь не мало людей её используют.

Цитата Сообщение от infobos Посмотреть сообщение
И уже заметил неприятность того, что unity готовит файл слежки своих проектов. И следит за вашими проектами как вы их распространяете. А это уж простите меня не устраивает. Мой файрвол мне об этом сообщает.
С Unreal Engine 4 такая же проблема. Они шпионят за всеми проектами. Ведут статистику распространения проектов созданные на их движках.
Я ещё добавлю по поводу Unity. На нём можно очень быстро делать прототипы 3D приложений. Если опасаетесь утечки своих исходников, то для создания этих самых прототипов можно поставить Unity на виртуальную машину Virtual Box и отрезать ей доступ в интернет.
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
03.01.2017, 19:56  [ТС]
На Unity можно подключать свои dll ?
Можно будет свою собственную библиотеку придумать и писать для упрощения кода на других языках.
Есть же такая возможность. dll написан на C++ а его подключить к С#. И далее это все реализовать в Unity.
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,102
Записей в блоге: 243
03.01.2017, 20:31
Мне такое в голову не приходило, но оказывается можно -> пошаговая инструкция
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
04.01.2017, 06:48  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Мне такое в голову не приходило, но оказывается можно -> пошаговая инструкция
Еще вопрос возник. В unity проекты с dll будут компилироваться под другие операционные системы (Mac, Linux)

Добавлено через 32 минуты
То есть что будет с dll файлом? он подвергнется изменению? Надо же настроится под другую операционную систему.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.01.2017, 07:22
Цитата Сообщение от 8Observer8 Посмотреть сообщение
думаю, что если у пользователя стоит .NET версии 4.0 (а на Win7 он должен стоять поумолчанию), то WPF 3D приложение должно запускаться.
Цитата Сообщение от infobos Посмотреть сообщение
Что нужно сделать на стороне клиента, чтобы запустить этот проблемный DirectX
В Windows 7 DirectX 11 присутствует из коробки.
В Windows 10 из коробки уже DirectX 12
т.е. если целевая ось выше хрюшки или висты то ниче делать уже и не надо, все сделано в исходе. Если таки хрюшка или виста то необходимо поставить пакет редистрибутаблов из SDK чтобы 11-ый если именно он нужен. Если же целевой 9с то он и в хрюшке из коробки.
Что касается OpenGL. Весь функционал живет в драйверах видюхи и железозависим. Тут с одной стороны все просто - одна DLL которая живет (обязана быть из коробки) в винде начиная с 95-ой. С другой стороны все на порядки сложнее. Потому как для поимения возможностей OpenGL выше 1.1 При помощи функций из оной DLL нужно получить из драйвера список поддерживаемых расширений и получить адреса поддерживаемых функции. Тот еще гемор учитывая что получение адреса делается ни разу не стандартным GetProcAddress и статически все это не прилинкуешь, а функций оных около 4,5 тыс. Соостветственно получаем инициализацию объемом примерно 20 тыс строк кода.

Добавлено через 6 минут
Цитата Сообщение от infobos Посмотреть сообщение
То библиотеки не хватает, то просто не запускается по неизвестной ошибке
Не факт что не хватает библиотеки именно от DirectX. Программы сделанные на Visual Studio тоже зависят от рантайм библиотек. которые для свежих версий студии в винде из коробки точно не присутствуют. А если и присутствуют то обычно Release сборки несовместимые с Debug сборками. Посему на другой компутер творения студии нужно носить в Release сборке и с редистром рантайма. То же касается и Delphi/C++ Builder рантайм которых в винде точно отсутствует. Хотя там есть возможность весь рантайм упаковать во внутрь.
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
04.01.2017, 07:47  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В Windows 7 DirectX 11 присутствует из коробки.
В Windows 10 из коробки уже DirectX 12
т.е. если целевая ось выше хрюшки или висты то ниче делать уже и не надо, все сделано в исходе. Если таки хрюшка или виста то необходимо поставить пакет редистрибутаблов из SDK чтобы 11-ый если именно он нужен. Если же целевой 9с то он и в хрюшке из коробки.
Что касается OpenGL. Весь функционал живет в драйверах видюхи и железозависим. Тут с одной стороны все просто - одна DLL которая живет (обязана быть из коробки) в винде начиная с 95-ой. С другой стороны все на порядки сложнее. Потому как для поимения возможностей OpenGL выше 1.1 При помощи функций из оной DLL нужно получить из драйвера список поддерживаемых расширений и получить адреса поддерживаемых функции. Тот еще гемор учитывая что получение адреса делается ни разу не стандартным GetProcAddress и статически все это не прилинкуешь, а функций оных около 4,5 тыс. Соостветственно получаем инициализацию объемом примерно 20 тыс строк кода.
Все равно проблема остается и мне пока не понятна суть.

Инфа такая:
1. В Windows 7,8,10 Стоят Direct 9,10,11 (так кое что проверял, стоят DirectX не важно какой версии но они есть)
2. Библиотеки для программиста почему то не работают с обозначенными Directx по умолчанию для windows.
3. Приходится в ПК под Windows грузить DirectX специальный под библиотеки программиста.

Ерунда какая-то получается...

Проблема еще в силе по поводу DirectX.

Не понятно где скачать библиотеку программиста, которые работали бы под directX по умолчанию.
Или надо Библиотеки программиста под DirectX 11 использовать?

Я проверял на библиотеках 2009 года. Но какая там версия грузилась для меня осталось загадкой.
Качал с этой статьи: http://gamesmaker.ru/programmi... -runtimes/

Может быть библиотеки надо использовать d3d10.h, d3d11.h d3d12.h и тому подобное.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Не факт что не хватает библиотеки именно от DirectX. Программы сделанные на Visual Studio тоже зависят от рантайм библиотек. которые для свежих версий студии в винде из коробки точно не присутствуют. А если и присутствуют то обычно Release сборки несовместимые с Debug сборками. Посему на другой компутер творения студии нужно носить в Release сборке и с редистром рантайма. То же касается и Delphi/C++ Builder рантайм которых в винде точно отсутствует. Хотя там есть возможность весь рантайм упаковать во внутрь.
Что такое рантайм? Что за редистром рантайма?
Можно поподробнее какие файлы отсутсвуют и где их брать. Пути этих файлов и прочее. Иные настройки.
На конкретном примере VS2012.

Добавлено через 10 минут
Я так понял библиотеки под DirectX 9.0 не будут работать на ПК под DirectX 11 ?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.01.2017, 08:35
Цитата Сообщение от infobos Посмотреть сообщение
Я так понял библиотеки под DirectX 9.0 не будут работать на ПК под DirectX 11 ?
У DirectX существует обратная совместимость. т.е если установлен 11-ый то с ним и все остальные начиная с 8-го
Цитата Сообщение от infobos Посмотреть сообщение
Я проверял на библиотеках 2009 года. Но какая там версия грузилась для меня осталось загадкой.
Вообще качать SDK надо тут и больше нигде https://www.microsoft.com/en-u... px?id=6812

Цитата Сообщение от infobos Посмотреть сообщение
Библиотеки для программиста почему то не работают с обозначенными Directx по умолчанию для windows.
3. Приходится в ПК под Windows грузить DirectX специальный под библиотеки программиста.
Скорее всего опять же проблема Debug/Release сборки. В комплект SDK входят Debug версии библиотек несовместимые с Release версиями. Ну а на другом компе естественно только Release версии библиотек. поэтому на другой комп нужно носить только Release сборку
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
04.01.2017, 08:40  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Скорее всего опять же проблема Debug/Release сборки. В комплект SDK входят Debug версии библиотек несовместимые с Release версиями. Ну а на другом компе естественно только Release версии библиотек. поэтому на другой комп нужно носить только Release сборку
Конечно Release использовал. DirectX был, а все равно требовала DirectX устанавливать. Установил сработало. По умолчанию DirectX не работает.

Ну, а на другой вопрос:
Что такое рантайм? Что за редистром рантайма?
Можно поподробнее какие файлы отсутсвуют и где их брать. Пути этих файлов и прочее. Иные настройки.
На конкретном примере VS2012.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.01.2017, 08:42
Лучший ответ Сообщение было отмечено infobos как решение

Решение

Цитата Сообщение от infobos Посмотреть сообщение
На конкретном примере VS2012.
Сорьки у меня 2015-я.
Цитата Сообщение от infobos Посмотреть сообщение
Можно поподробнее какие файлы отсутсвуют и где их брать
вот при запуске программа по порядочку и говорит какой dll ей не хватает. а брать ее у Visual Studio из папочки \VC\Redistr под соответствующюю платформу. (под x86 и под x64 DLL-ки разные )
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
04.01.2017, 08:47  [ТС]
Конечно Release использовал. DirectX был, а все равно требовала DirectX устанавливать. Установил сработало. По умолчанию DirectX не работает. В связи с этим возникают проблемы совместимости. То что предлагают программисты не по библиотекам не вяжется с тем какой DirectX по умолчанию в Winbdows.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2017, 08:47

S.T.A.L.K.E.R.: Clear Sky показывает чёрный экран в Windows 7 под DirectX 10
Может кто успел столкнутся с таким. Установил, значит, Сталкер, поставил патчи 3.4.5.7.8.9 (все которые нашёл на playground.ru), запустил....

Подключение managed directx - Имя типа или пространства имен "DirectX" отсутствует в пространстве имен
Когда пишу using Microsoft.directx; выдаёт ошыбку Имя типа или пространства имен &quot;DirectX&quot; отсутствует в пространстве имен...

Как реализовать хук DirectX
Доброго времени суток, уважаемые пользователи форума :) Возникла задача реализовать хук DirectX на C#, а точнее реализовать и повесить...

Как реализовать меню в 3D-играх на DirectX?
как реализовать меню в 3D-играх на DirectX?

Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые поддерживают DirectX 9?
Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые поддерживают DirectX 9?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru