Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-05-11

Re: 3D графика

> И еще - что лучше - Direct3D или OpenGL?

ИМХО, причём очень большое.

D3D - преимущества :

1. ООП ориентированность. Хоть и под маской COM. Отсюда, в частности,
простота использования и упрощение обеспечения совместимости с будущими
расширениями.
2. Отсутствие стандартов (окромя диктуемых самой MictoSoft), что ускоряет
введение новых возможностей. Смотри однако ниже о GL.
3. Более высокое абстрагирование от hardware. Под hardware в общем случае
понимается, что угодно. Хоть и полностью программная реализация.
4. Тонкость (при наличии достаточно xxx-endового hardware) программной
прослойки между приложением и GPU.

D3D - недостатки:

1. Реализованность только под Windами. По крайней мере - пока.
2. Сложнее в изучении.
3. Требует инсталляции proxy-библиотек - самих интерфейсов D3D.

GL - достоинства:

1. Наличие международных стандартов. Причём и на устояшвиеся расширения.
2. Проще в изучении.
3. Реализованность под всеми уважающими своих юзеров платформами.

GL - недостатки:

1. Интерфейс - функционально ориентированный. Остюда, в частности, более
неудобное использование и бОльшая вероятность ошибок.
2. Расширения, пока не стандартизированы, непереносимы. Отсюда длительные
задержки с введением открытых расширений. Яркий пример - шейдеры.
3. Использование расширений - жутко неудобное. Правда, один раз (на каждое
расширение) повозившись, (и не без ООП ;-) ) эта проблема решается. А сильно

повозившись (и не без generic programming paradigm 8-} ), один раз не ВСЕ
расширения.
4. "Черезчурная" (по сравнению с D3D) переносимость противоречит (на уровне
конкретных реализаций)
а) скорости как hardware, так и software;
б) полному покрытию возможностей hardware;
в) в итоге "развязыванию рук" поставщиков hardware и потребителей,
каковыми в данном случае являются программисты.

Резюмиря по сумме плюсов и минусов (без весовых коэффициентов - желающие
пусть сами отранжируют и получат свои результаты): D3D лучше. Но не более,
чем в большинстве случаев. Однако ж есть и меньшинство...

В косвенное подтверждение своего ИМХО: всем (многим?) известна серия 3DMark.

Кто-нибудь видел GLMark-и???

P.S. Если кто видел, дайте URL plz.
И снова обращаю внимание - это ИМХО. Если есть возражения - не стесняйтесь.
В конце концов экспертом в этой области себя не считаю. Если есть желание
подискутировать, во избежание флуда прошу в личку.

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4456
Возраст листа : 598 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/365456
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-05-11 11:07:12 (#365456)

Re[3]: CClientDC

Здравствуйте !

> Victor> {
> Victor> ...
> Victor> CClientDC dcDraw(this);
> Victor> CPen pen, *pOldPen;
> Victor> pOldPen = pen.CreatePen(PS_SOLID, 1, RGB(0x00,
> 0x33, 0x66));
> Victor> dcDraw.SelectObject(&pen);
> Victor> dcDraw.MoveTo(100,100);
> Victor> dcDraw.SelectObject(pOldPen);
> Victor> ...
> Victor> }

Кстати, только вот сейчас опечатку увидел :(
Надо так:

CClientDC dcDraw(this);
CPen pen, *pOldPen;
pen.CreatePen(PS_SOLID, 1, RGB(0x00, 0x33, 0x66));
pOldPen = dcDraw.SelectObject(&pen);
dcDraw.MoveTo(100,100);
dcDraw.SelectObject(pOldPen);

> ЗЫЖ Из всего выше сказанного могу только посоветовать, всем тем, кому
> придется столкнуться с такой проблемой, размещать всё в динамической
> памяти,

Я обычно выше приведенный вариант использую - тоже нормально
работает :)

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4455
Возраст листа : 598 (дней)
Количество подписчиков : 516
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/365309
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-11 02:43:58 (#365309)

Re: 3D графика

Ресурс по теме 3D графики знаю следующий: http://progs.biz/directx/direct3d/direct3d01.aspx

Лучше бесспорно DirectX так как он работает быстрее чем OpenGL (хотя есть люди,
утверждающие, что можно ддобиться от OpenGL такого же или даже немного большего
быстродействия. Но это только при огромном опыте и далеко не всегда) всделсвии
прямой работы с устройствами.

Номер выпуска : 4454
Возраст листа : 598 (дней)
Количество подписчиков : 516
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/365303
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-11 02:27:50 (#365303)

Re[2]: CClientDC

Доброго...Эм, поры суток, Victor.

Вы писали 10 мая 2005 г., 0:39:54:

Victor> А почему именно на CFormView ?
Victor> CFormView служит для несколько иных целей чем вывод графики -
Victor> это фактически диалоговое окно, на котором надо размещать
Victor> свои элементы управления. Для этого оно и сделано. Если нужно просто
Victor> рисовать что то, то гораздо правильнее использовать CScrollView
Victor> (там реализованы механизмы пересчета координат с учетом заданных
Victor> метрик и текущей позиции скроллинга).

Это все понятно, но кроме своих контролов приходилось многократно
выводить результат их работы...От сюда и выбор...

Victor> надо либо так:
Victor> {
Victor> ...
Victor> CClientDC dcDraw(this);
Victor> dcDraw.MoveTo(100,100);
Victor> ...
Victor> }
Victor> тут dcDraw при выходе из функции разрушится.
Самое интересное, что так вначале оно и было, НО при выходе ничего не
разрушалось:(
Victor> либо так:
Victor> {
Victor> ...
Victor> CClientDC *pDraw = new CClientDC(this);
Victor> pDraw->MoveTo(100,100);
Victor> delete pDraw;
Victor> ...
Victor> }
Самый действенный вариант!!!
Victor> И еще контекст, наверно, может не освобождаться если в него выбрать
Victor> какие либо объекты GDI, и потом не выбрать в него то что там было ранее.
Не может, а так оно и есть!!!

Victor> То есть вот так делать не надо:
Victor> {
Victor> ...
Victor> CClientDC dcDraw(this);
Victor> CPen pen;
Victor> pen.CreatePen(PS_SOLID, 1, RGB(0x00, 0x33, 0x66));
Victor> dcDraw.SelectObject(&pen);
Victor> dcDraw.MoveTo(100,100);
Victor> ...
Victor> }
Victor> надо так:
Victor> {
Victor> ...
Victor> CClientDC dcDraw(this);
Victor> CPen pen, *pOldPen;
Victor> pOldPen = pen.CreatePen(PS_SOLID, 1, RGB(0x00, 0x33, 0x66));
Victor> dcDraw.SelectObject(&pen);
Victor> dcDraw.MoveTo(100,100);
Victor> dcDraw.SelectObject(pOldPen);
Victor> ...
Victor> }

Виктор, большое Вам спасибо за информацию и помощь!
ЗЫЖ Из всего выше сказанного могу только посоветовать, всем тем, кому
придется столкнуться с такой проблемой, размещать всё в динамической
памяти, а затем ПРИНУДИТЕЛЬНО удалять...И и использовать двойную
буферизацию.

Павел a.k.a BOER mailto:bo***@p*****.net

Номер выпуска : 4453
Возраст листа : 598 (дней)
Количество подписчиков : 516
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/365294
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Paul 2005-05-11 01:36:40 (#365294)