![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Возникла необходимость работы с Managed DirectX. (теперь буду спецом, блин.
Сейчас делаю первые шаги - верчу подсвеченную пирамидку. Все сделано согласно туториалам, что шли вместе с DX9SDK. Запускается приложение, а дальше два варианта развития событий: 1) все красиво отрисовывается. (показано в прикрепленном файле t0.jpg); 2) изображение искажается - появляются какие-то дополнительные плоскости, хотя в коде ничего подобного нет (файлы t1.jpg и t2.jpg). Т.е. происходит следующее - при запуске спонтанно появляются вышеописанные искажения. Раз запущу - все хорошо. Закрою и снова запущу эту же программу - появляются какие-то левые плоскости. Хотелось бы уточнить, это глюки у меня или у самого Managed DX? Кто-нибудь встречался с подобным? Как это решить? З.Ы. Используется .NET Framework 2.0 Я все запаковал в архив вместе с самим проектом. На "красоту" кода не обращайте внимания - я просто тренируюсь. Присоединённый файл ( Кол-во скачиваний: 30 )
trouble.zip 103,06 Kb-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
У меня референсы на DirectX светятся жёлтым, хотя установлен DX SDK 9.0 (Summer 2004). Что не так ?
Добавлено @ 19:50 З.Ы. навскидку: может быть отключить _presentParams.EnableAutoDepthStencil = true; ? -------------------- ![]() |
|||
|
||||
| Kurt |
|
||||||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
ну, поправь референсы в св-вах проекта. Нужны Microsoft.DirectX, Microsoft.DirectX.Direct3D и Microsoft.DirectX.Direct3DX.
не. тогда вот на этой строчке:
выкидывается Exception. Да и в SDK-примерах _presentParams.EnableAutoDepthStencil поставлено в true. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
||||||
|
|||||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
у меня во время выполнения выдает Microsoft.DirectX.Direct3D.InvalidCallException was unhandled в
всегда при _myPyramid.TriangleCount = 18 -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
||||||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Это потому что инициализация массива _vertexArray производится явно для каждого элемента, а не в цикле:
и получается, что сколько ни указывай треугольников, но проинициализированы будут только первые 18 вершин - т.е. 6 полигонов, пирамида. Пофиксить ошибку с искажениями можно так:
Всё оказалось очень просто: метод
выводит заданное количество треугольников (т.к. PrimitiveType.TriangleList), а их количество равно кол-ву вершин делённому на 3; в твоём коде св-во MyPiramid.TriangleCount возвращало _vertexCount, то есть 18 вместо 6 -- в итоге получалось, что вершины для недостающих полигонов Direct3D брал извне границ вертексного буфера. -------------------- ![]() |
||||||||
|
|||||||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Блин, mr.DUDA, ты абсолютно прав. Я лопухнулся.
Вот что бывает, когда ленишься вручную прописать property, а используешь Copy-Paste. А я уже начал думать, что это глюки самой библиотеки. Спасибо за помощь! Буду разбираться дальше... З.Ы. Думаю, тема закрыта. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |