Двухмерное отсечение

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Двухмерное отсечение

Сообщение Tarantul » 22.03.2005 (Вт) 18:50

Что-то в DX7 какой-то калечный клиппер - иногда спрайт плохо отсекается, и не отображается на экране, хотя должен бы. Вот я и создал собственную функцию - отсекатель, которая работает и при масштабированых блиттингах. Она хоть и простая, но писать ее было противно :? А вот и она:

Код: Выделить всё
Sub ClipBltRect(DestW As Long, DestH As Long, dr As RECT, sr As RECT)

'DestH-высота целевой поверхности
'DestW-ширина целевой поверхности
'dr-Прямоугольник назначения
'sr-Прямоугольник исходный
'Функция вызывается после расчета dr и sr перед блиттингом
'Параметры sr и dr передаються по ссылке и изменяються функцией

Dim KoefX As Single
Dim KoefY As Single


KoefX = (sr.Right - sr.Left) / (dr.Right - dr.Left)
KoefY = (sr.Top - sr.Bottom) / (dr.Top - dr.Bottom)

If (dr.Left >= 0) And (dr.Top >= 0) And _
(dr.Right) <= DestW And (dr.Bottom) <= DestH Then
    Exit Sub
End If


If dr.Left < 0 Then sr.Left = sr.Left - dr.Left * KoefX: dr.Left = 0
If dr.Top < 0 Then sr.Top = sr.Top - dr.Top * KoefY: dr.Top = 0
If (dr.Right) > DestW Then sr.Right = sr.Right - _
(dr.Right - DestW) * KoefX: dr.Right = DestW
If (dr.Bottom) > DestH Then sr.Bottom = sr.Bottom - _
(dr.Bottom - DestH) * KoefY: dr.Bottom = DestH


End Sub



Прошу заценить :)

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: Двухмерное отсечение

Сообщение Vovik » 22.03.2005 (Вт) 19:56

Tarantul писал(а):Что-то в DX7 какой-то калечный клиппер - иногда спрайт плохо отсекается, и не отображается на экране, хотя должен бы.
Нет, не должен.... В том-то и трабла dx7, что спрайт, чуть-чуть перейдя координаты экрана не выводится... когда-то я тоже писал чет типа такой функции.... Кстати, вы еще не перешли на DirectX8 ? Тогда мы идем к вам! DX8 - рулит. :)

c0dEAr
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 14.06.2002 (Пт) 0:53
Откуда: Russia

Сообщение c0dEAr » 22.03.2005 (Вт) 23:23

Джордж Буш: Вы все еще верите в демократию? Тогда мы летим к вам! Вот, что действительно рулит, так это DirectX 9.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.03.2005 (Вт) 23:40

Да нет же! Переходи на OpenGL, DirectX - отстой!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.03.2005 (Вт) 23:44

(шутка)
А про проблему с клиппером в DX7 даже я знаю ;)

Клиппер работает только в оконном режиме, в полноэкранном надо вручную обрезать. Приведенный выше код работает? Значит, всё ок. Удачи.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 23.03.2005 (Ср) 1:01

Tarantul, странно, что ты так удивлен. Все доступные в сети туториалы по DD в первую очередь рассказывают об отсечении непрорисовываемой части поверхности.

Amed, о достоинствах и недостатках каждого ядра можно спорить часами, но в итоге различия только в синтаксисе. OpenGL более гибок в программировании сложных программ, тогда как DX с этим имеет некоторые траблы. Также OpenGL мультиплатформенное ядро, с которым можно писать даже под linux, unix и пр.

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

c0dEAr, DirectX 9 действительно рулит во всех отношениях. А относительно VB можно сказать, что управляемый DirectX (DX9) был написан в соответствии с нуждами программистов на visual Basic. Как писал один из авторов directX Том Миллер:


Том Миллер писал(а):После выпуска DirectX 8 стало очевидно, что интерфейс API не совсем удобен в использовании. Примеры были сложны для понимания, и код не напоминал привычные приложения на visual Basic.
Большинство разработчиков, использующий Visual Basic, нашли API слишком сложным для применения, а разработчики на С++ не видели причин переключаться на API, посколько для них это было неудобно и не выгодно.

...


Так что действительно есть смысл переходить на directx 9 и платформу NET, хотя быстродействие программ на С# и visual basic по прежнему будет уступать C++ в скорости в некоторых моментах. но для написания небольших игр не обязательно добиваться максимального быстродействия, верно?

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 23.03.2005 (Ср) 12:32

Насчет Direct'a:
Я недавно только начал его изучать. Купил книгу по программированию игр на DX7, прочитал ее и делаю свою игру. Думаю, что когда наконец ее закончу, перейду на DX8 или DX9. Кстати, скорее всего перейду после этого на VB.NET или C++. В VB6 слабовата объектно-ориентированость(Особенно мне не хватает полного наследования). А вообще я не особо-то люблю читать электронные учебники - предпочитаю обычные книги.

Кстати, насчет VB.Net: как там установить ссылку на DX9? Я его установил, запускаю, добавляю ссылку, а там только DX7 и DX8. Или DX9 под VB надо отдельно устанавливать? Подскажите, pls :)

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 24.03.2005 (Чт) 10:21

Так то, кто-то знает как настраивать DX9 под VB.NET :?:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.03.2005 (Чт) 23:09

Tarantul писал(а):Так то, кто-то знает как настраивать DX9 под VB.NET :?:


Да вообще-то вроде по той же системе, что и в vb 6... ты уверен, что он у тебя установлен, DX9?

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 25.03.2005 (Пт) 19:32

У меня точно установлен DirectX 9.0С . Другое дело, есть ли у меня соответствующая VB-библиотека...

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 01.04.2005 (Пт) 13:20

Tarantul
Попробуй переустановить DX9.0C с ключем "/installmanageddx".

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 02.04.2005 (Сб) 14:55

А как должна выглядеть ссылка на DX9 для VisualBasic?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.04.2005 (Сб) 20:50

Mikle писал(а):Tarantul
Попробуй переустановить DX9.0C с ключем "/installmanageddx".


если установка не запускается ввиду уже установленного DX то посмотри в дистрибутиве файл DXManaged.cab открой архиватором и запусти инсталятор отдельно. Затем перезагрузи компутер.

Как добавляется ссылка - посмотри примеры из SDK или из сети.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 02.04.2005 (Сб) 22:03

Ребят, один вопрос.
Тот DX9.0с, который поставляется с играми, он не включает в себя библиотеки для разработки программ. А для того, чтобы начать прогать на 9-том нужно специально выкачать(или достать) ещё 140 метров. Я прав?
И тут второй вопрос встал: Кто-нить работал вообще с девятым ДХ-ом?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 03.04.2005 (Вс) 0:06

Anatron писал(а):Ребят, один вопрос.
Тот DX9.0с, который поставляется с играми, он не включает в себя библиотеки для разработки программ. А для того, чтобы начать прогать на 9-том нужно специально выкачать(или достать) ещё 140 метров. Я прав?
И тут второй вопрос встал: Кто-нить работал вообще с девятым ДХ-ом?


1. Включает, как я говорил выше для VB и C# библиотеки лежат в dxmanaged.cab (Отдельный инсталятор), скачивать дополнительно ничего не надо.
2. Я сейчас с ним работаю, но по большей части в плане перевода кода с 9 на 8 версию. для себя решил, что что-либо писать под девятку буду только на С++ да и то шестой версии.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 04.04.2005 (Пн) 7:13

d3drm писал(а):2. Я сейчас с ним работаю, но по большей части в плане перевода кода с 9 на 8 версию. для себя решил, что что-либо писать под девятку буду только на С++ да и то шестой версии.

?? А что ж так? Для VB он непригоден?
А тогда ещё вопрос: где взять инфу по DX9?

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 04.04.2005 (Пн) 7:15

АААА!!!
Что за х*****? Почему этот самый манажедД-ИКС ставится только для frameworks.NET? А? А какже старый добрый VB6? Забыли про него совсем? Обидно...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.04.2005 (Пн) 23:08

Anatron писал(а):АААА!!!
Что за х*****? Почему этот самый манажедД-ИКС ставится только для frameworks.NET? А? А какже старый добрый VB6? Забыли про него совсем? Обидно...


Нет, просто MANAGED DirectX это вообще совсем другое дело, нежели восьмерка. Кстати, С++ так же не поддерживает этот Managed, поэтому я и решил на С++ писать, потому что девятка там практически ничем не отличается от восьмерки, только в лучшую сторону.

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 27.06.2005 (Пн) 15:15

Ну вот инсталлировал я mdxredist.exe с архива ManagedDX.cab, а мне инсталлятор даже не сказал, куда он файлы инсталлировал и как они должны выглядеть. Запускаю примеры на 9-ом директе, а они библиотеку не могут найти. Че мне теперь делать? :cry:
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.06.2005 (Пн) 18:33

какие примеры? vb.net?
ХЎ

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 27.06.2005 (Пн) 18:56

Ну да. Например в VBstreets есть примерчик, который называется DX9 DirectDraw.
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.06.2005 (Пн) 20:37

1. где?
2. DD он и есть DD, ни разу не видел реализации его под дх
ХЎ

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 27.06.2005 (Пн) 21:54

"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.

Бутч
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 29.04.2005 (Пт) 17:30
Откуда: Днепр

Сообщение Бутч » 30.06.2005 (Чт) 19:10

Да здесь вообщем дело то не в примерах. Просто установил я DXManaged, а куда он установился не знаю и поэтому не могу подключить библиотеку. :x
Кто пишит на VB.NET, напишите пожалуйста, как DirectX 9 подключить? :(
"Пусть вон тот желтый кубик будет для наглядности синим шариком."

Windows XP: compiling 95%...
- Билл, опять повисло!
- Ничего, сойдет.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList