kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 lunatix
lunatix
Вопрос

Windows 7/8, Direct3D9, 10 и 11 - Эффекты / шейдеры

В настоящее время я разрабатываю приложение для Windows 8 Store, Windows 8 Desktop, а также Windows 7. Приложение должно плавно работать на планшете, а также на "обычном" устройстве с Windows 7/8. Итак, я получил планшет с работы и установил на него Windows 8, только чтобы понять, что жуткий Intel Graphics Media Accellerator (600) поддерживает только DirectX 9.0c.

Итак, я уже несколько часов пытаюсь заставить мои DirectX10/11 эффекты/шейдеры работать на DirectX9, но ничего не получается... Тест с NVidia's FxComposer показал мне, что DirectX9 эффекты работают хорошо.

Я программирую на SharpDX / C#, и техника10's и техника11's действительны (MyTechnique.IsValid == true). Для загрузки эффекта я использую следующие строки кода:

var EffectByteCode  = ShaderBytecode.CompileFromFile("DirectX/Shaders/"+FxFile, "fx_5_0", ShaderFlags.None, EffectFlags.None);
var Effect      = new Effect(GraphicsProvider.Device, EffectByteCode, EffectFlags.None);
mEffect             = FxEffect;
mTechnique11            = mEffect.GetTechniqueByName("main_11"); //works
mTechnique10            = mEffect.GetTechniqueByName("main_10"); //works
mTechnique9             = mEffect.GetTechniqueByName("main_9"); //doesn't work

Я вставил исходный код эффекта сюда: http://pastebin.com/KPxBN1DD... исключил "main_11" и "main_10", в моих тестах я их закомментировал, поэтому я просто удалил эти блоки комментариев... я думаю, dx9 должен понять этот очень простой код...

Итак, мои последние вопросы:

  • Действителен ли параметр "fx_5_0" для загрузки техники, техники10 и техники11?
  • Правилен ли мой код шейдера? Или я сделал что-то ужасно неправильное?
  • Нужно ли указывать какую-то другую/дополнительную информацию/функции/параметры для загрузки техники DX9?
  • Может это ошибка SharpDX? Я посмотрю код для этого сейчас, я думаю...

Edit: Попытался немного прояснить вопрос(ы)...

1 2012-10-15T17:06:42+00:00 2
 lunatix
lunatix
Редактировал вопрос 15-го октября 2012 в 5:50
Программирование
directx
c#
windows-8
directx-10
directx-9
Решение / Ответ
 xoofx
xoofx
16-го октября 2012 в 12:01
2012-10-16T00:01:10+00:00
Дополнительно
Источник
Редактировать
#17465512

Устаревший фреймворк Effect не поддерживается в Windows 8 Metro (потому что D3DCompiler_xx.dll не поддерживается), поэтому вам лучше работать с другим решением. Кроме того, Effect устарел и больше не поддерживается компанией Microsoft.

Старая техника Direct3D9 (скомпилированная с помощью vs_2_0 или ps_2_0) не сохраняется в файлах FX, скомпилированных с помощью fx_5_0 (просто проверьте вывод компилятора fxc.exe и вы их не увидите).

Вы должны использовать vs_4_0_level_9_x или ps_4_0_level_9_x, чтобы скомпилировать их для аппаратной поддержки 9.x нижнего уровня, используя синтаксис technique10/11. Также, если все ваши оригинальные шейдеры могут работать с vs_4_0_level_9_x и у вас'нет какой-либо конкретной оптимизированной версии для 10.0 или 11.1, то вам'не нужно компилировать main_10 или main_11, так как шейдеры level_9_x работают на любом оборудовании от 9.x до 11.x.

Возможно, вы можете взглянуть на SharpDX.Toolkit, еще не официальный, но он поддерживает фреймворк эффектов (с некоторыми стоковыми эффектами XNA, такими как BasicEffect или SpriteBatch). Бета-версия инструментария будет доступна в конце этого месяца.

 xoofx
xoofx
Редактировал ответ 16-го октября 2012 в 2:55
3
0
Анонимный пользователь
15-го октября 2012 в 6:04
2012-10-15T18:04:40+00:00
Дополнительно
Источник
Редактировать
#17465511

Попробуйте заменить семантику SV_TARGET на COLOR0. До сих пор я не встречал семантику SV_TARGET в шейдерах D3D9.

1
0
Похожие сообщества 10
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 772 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
Pro Windows
Pro Windows
1 490 пользователей
Microsoft Windows и всё, что с этим связано. Правила: https://t.me/pro_windows/308448 Список интересных групп и каналов: https://github.com/goq/telegram-list
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 428 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
pro_winapi
pro_winapi
590 пользователей
Обсуждение вопросов программирования в OS Windows на C/C++ и других языках, связанных с API этой операционной системы
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией