Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 04:12   #1
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию Ошибка создания устройства после чтения параметров из файла.

Здравствуйте. хочу создать полноэкранное приложение, но по какой-то причине если до создания параметры берутся из xml файла то при создании device выдается ошибка, при оконном режиме ошибки не возникает, проверял без чтения параметров из файла xml создается нормально. Но мне нужно чтобы было считывание параметров. В чем может быть причина данной ошибки?

Вот код чтения параметров из файла, пишется до создания устройства:
XmlTextReader rdr = new XmlTextReader("Settings.xml");

while (rdr.Read())
{
if (rdr.NodeType == XmlNodeType.Element && rdr.Name == "Window_Width")
{
rdr.Read(); // move to the Text node
WindWidth = Convert.ToInt32(rdr.Value.ToString( ));
}
if (rdr.NodeType == XmlNodeType.Element && rdr.Name == "Window_Height")
{
rdr.Read(); // move to the Text node
WindHeight = Convert.ToInt32(rdr.Value.ToString( ));
}
if (rdr.NodeType == XmlNodeType.Element && rdr.Name == "Sglazhivanie")
{
rdr.Read(); // move to the Text node
Sglazhivanie = Convert.ToInt32(rdr.Value.ToString( ));
}
}
rdr.Close();

Вот код создания полноэкранного приложения:
d3dpp = new PresentParameters(); // Параметры DirectX
d3ddm = Manager.Adapters.Default.CurrentDis playMode;

d3dpp.Windowed = false;
d3dpp.SwapEffect = SwapEffect.Flip;
d3dpp.FullScreenRefreshRateInHz = d3ddm.RefreshRate;
d3dpp.PresentationInterval = PresentInterval.Default;
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferWidth = WindWidth;
d3dpp.BackBufferHeight = WindHeight;
d3dpp.EnableAutoDepthStencil = true;
d3dpp.AutoDepthStencilFormat = DepthFormat.D16;

Aspect = (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;
int adapterOrdinal = Manager.Adapters.Default.Adapter;
CreateFlags flags = CreateFlags.SoftwareVertexProcessin g;
Caps caps = Manager.GetDeviceCaps(adapterOrdina l, DeviceType.Hardware);
if (caps.DeviceCaps.SupportsHardwareTr ansformAndLight)
flags = CreateFlags.HardwareVertexProcessin g;
if (caps.DeviceCaps.SupportsPureDevice )
flags |= CreateFlags.PureDevice;
d3dpp.MultiSample = MultiSampleType.None;
for (MultiSampleType m = MultiSampleType.SixteenSamples; m >= MultiSampleType.TwoSamples; m--)
{
if (((int)m).ToString() == Convert.ToString(Sglazhivanie))
{
d3dpp.MultiSample = m;
}
}
device = new Device(0, DeviceType.Hardware, this.Handle, flags, d3dpp); //Выдает ошибку в этом месте
Sargonass вне форума Ответить с цитированием
Старый 13.01.2012, 08:19   #2
akasex
Форумчанин Подтвердите свой е-майл
 
Аватар для akasex
 
Регистрация: 31.03.2008
Сообщений: 179
По умолчанию

C# + Managed DirectX ???
akasex вне форума Ответить с цитированием
Старый 13.01.2012, 14:21   #3
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию

Да, C# + Managed DirectX
Sargonass вне форума Ответить с цитированием
Старый 13.01.2012, 15:44   #4
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Sargonass, ты уверен, что твоя видеокарта поддерживает режим который ты на нее ставишь?

Код:
device = new Device(0, DeviceType.Hardware, this.Handle, flags, d3dpp); //Выдает ошибку в этом месте
flags - это что такое?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 13.01.2012, 22:37   #5
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию

Я же написал что при оконном режиме все работает правильно, при полноэкранном режиме но без чтения параметров из файла тоже все работает, а если добавляем чтение любых параметров из файла то выдает ошибку. Flags - это характеристики поддерживаемые видиокартой, но они тут не причем.
Sargonass вне форума Ответить с цитированием
Старый 13.01.2012, 23:51   #6
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Я понимаю, что ты спрашиваешь. Кидаю версии, и попутно узнаю, что за переменные применяются. Может в файле записан режим, который не поддерживается, ...в смысле он криво считывается. Сделай вывод считанных данных в какой-нибудь список в форме, ...тот же Memo, или подобное, погляди, что получается.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.01.2012, 10:24   #7
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию

Если в какую-то переменную, которая вообще нигде не используется, из файла считываю данные, а параметры видеорежима прописаны вручную то все равно выдает ошибку. Т.е. ошибка возникает именно при использовании чтения данных из файла, если это убираю то все нормально.
Sargonass вне форума Ответить с цитированием
Старый 14.01.2012, 15:21   #8
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

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

Второе. Попробуй с xml-файла ничего не читать, ...только открыть и закрыть, а режим карты пусть задается статично в коде создания девайса. Далее подключай чтение по строкам, по одной, ...найдешь проблемное место. Если так и не сработает, попробуй текстовый файл, собственной структуры.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 14.01.2012, 16:10   #9
Sargonass
Пользователь
 
Аватар для Sargonass
 
Регистрация: 21.09.2011
Сообщений: 35
По умолчанию

Попробовал чтение из файла по строкам и нашел строку на которой падает приложение - это считывание сглаживания. Если стоит 0, то есть сглаживания нет, то полноэкранное приложение нормально запускается, в остальных случаях выдает ошибку. Получается в оконном режиме любой режим сглаживания до 8 работает, а полноэкранный режим работает только при отсутствии сглаживания. Почему так происходит?
Sargonass вне форума Ответить с цитированием
Старый 14.01.2012, 16:26   #10
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

читайте dxsdk9
Цитата:
Multisampling is supported only if the swap effect is D3DSWAPEFFECT_DISCARD.
Warn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка чтения файла Umnik1 Общие вопросы Delphi 12 25.06.2013 22:57
ошибка чтения из файла Fariori Visual C++ 3 01.11.2011 09:31
Ошибка чтения сохранённого файла(картинки) alex77755 Microsoft Office Excel 10 28.10.2010 14:46
Ошибка: Попытка чтения за концом файла PlayHard Помощь студентам 11 10.05.2010 22:51