ФлеймФорумОбщее

С чего лучше начинать изучение 3D: Direct3D vs OpenGL? (3 стр)

Страницы: 1 2 3 4 510 Следующая »
#30
20:32, 14 сен 2005

resurected_timofei
Тут не идет разговор о том как можно сделать что-то используя написанный движок и всякие надстройки.
Пример со скайбоксом удачен тем, что Д3д уже есть загрузка текстур из файлов всех возможных типов,
причем как из файлов так и из памяти. Чтобы добавить такой функционал в ОпенГл надо постараться или воспользоваться сторонними библиотеками.

Еще претензии к Д3д - отсутствие Квадов и Лост Девайс.
И еще обьясните пожалуйста, почему у меня не компилируются Sample`s из ДX СДК.
Все самплы в которых есть DXUT. Куча ошибок (77). Ругается на неизвестность всяких XBUTTON1 и тд.
Студия 7.1 июньский сдк.

#31
20:50, 14 сен 2005

по ОткрытомуГЛ нет доков кроме Red Book? Для новичков? Ха-ха-ха... буду долго смеятся. =) Скажете NeHe( он же Народный учебник по OpenGL ) - аЦтой?
У-у-у, а если заокеанских братьев меньших вспомнить.

Итак.
pmg.org.ru - NeHe и другая шняга. О КривомИксе тоже есть.
ultimategameprogramming.com - туева хуча туторов.( X, GL, Raytracing )
И, наконец, умерший для нас =( gametutorials.net( там несколько халявных туторов есть )

#32
13:50, 15 сен 2005

SergeyN19
Квады...Может быть.Если на весь экран -проще через ID3DXSprite.
А так квад делается через D3DXCreatePolygon(pDevice,1,4,&Mesh,NULL);
Насчет примера из SDK-определенного ничего сказать не могу,но часто в
INCLUDE и LIB в студии уже есть какие-то *.h и *.lib из старых версий DX.
Полезно их убить или просто переписать из SDK в студию все  новые *.h и *.lib

#33
14:17, 15 сен 2005

Ilia
Переписал, не помогло

  case VK_MBUTTON:
        case MK_MBUTTON: return 1;
        case MK_RBUTTON: return 2;
        case VK_XBUTTON1:
        case MK_XBUTTON1: return 3;
        case VK_XBUTTON2:
        case MK_XBUTTON2: return 4;

Пример Basic HLSL, ругается
error C3861: 'MK_XBUTTON1': identifier not found, even with argument-dependent lookup
DXUT.cpp(4941) : error C2051: case expression not constant

#34
16:23, 15 сен 2005

Fdooch

> Я считаю лучше D3D.

А я считаю что лучше на пляже с подругой загарать :) Mr_Devil, забей ты на эту 3D, это все лажа :)))

#35
18:04, 15 сен 2005

Mr_Devil
От себя тоже добавлю...
Dx6/7 я не посоветую даже врагу.Хотя писал и на нем-демка кстати есть в качалке.
DX9 уже неплохо причесан.В принципе,может тоже,что и GL.Документации
и демок в OGL больше,но это не всегда полезно.
GL начинался с функций рисования,DX-c объектов.Такими они в общем и остались
после некоторой конвергенции.Дело вкуса,короче.Я ,кстати,не настаиваю на
том,что DX круче всех.
Упрешься в любом случае не в недостатки API,а в реализацию конкретных
вещей-методов рисования,возможности видюхи и тп.То есть набор инструментов есть,
инструменты от разных API одинаковы,а что слепишь-это зависит от тебя.

Sergey19
Сделай go to definition of  .....MK_MBUTTON-в каком хидере.
Потом включи этот хидер и DXUT.cpp в проект :)))
resurected_timofei
Реклама,помню,была такая:)))-шампуня,кажется:
Vidal Sassun?...уош анд гоу...
Экий ты ,братец...спартаковец.Ну и куда эту тему из флейма девать теперь?
Иди лучше,загорай с подругой...У вас ведь лето еще...
Насчет skybox-и так ясно,как делать.Я спрашивал,сколько кода.

2All
Еще раз процитирую(У.Черчилля,кажется):
Национализм-последнее утешение для никчемных людей...Есть явная аналогия.
Я вступился за DX,потому что обидно,когда такие сложные и совершенные
в своем роде вещи,как ,скажем,тот же GF4MX440 народ нызывает ацтоем или еще как...

#36
19:09, 15 сен 2005

resurected_timofei
Как увидели,какой у тебя сложный выбор-расслабились сразу же...
Могу только повторить-выбирая по внешним признакам и советам других-
упрешься в сучность...

#37
14:06, 16 сен 2005

resurected_timofei
Трудно сказать...
Или человек думает больше сам-и тогда он чужие советы
не слушает и от него ничего не добьешься,либо наоборот-
еще и навязывает другим,вместо того чтобы ...ну,понятно.
Типа экстраверт/интраверт.Хотя могут быть и другие варианты...
>По вам видно, как (и где!) расслабились... ;)
Угадал может быть,но частично.
Припаял пару корпусов с шагом 0.65мм(у молодежи не получается пока),
выпил коньячку для профилактики(потому как холодно нынче у нас)
и пошел домой,к жене и детям...

#38
23:16, 16 сен 2005

Mr_Devil
>В принципе, из темы вопроса все понятно... Direct3D vs OpenGL? С чего стоит
>стартовать новичку в игроделанье? Только пожалуйста, аргументируйте ответы...

Начал с ДХ, осваивать стал DirectDraw - начинало тошнить, всё обошлось тем, что просто поплевался и стал осваивать OpenGL...
Возможно текущий DX и изменился в лучшую сторону, незнаю, но нет желания на него переходить...

#39
11:49, 17 сен 2005

Executor
Аналогично , начинал с ddraw потом d3d но остановился на opengl. сейчас  перехожу на д3д.

#40
14:09, 17 сен 2005

А я, помнится, ещё на 2-м д3д что-то пытался запрограммливать (лабу надо было сдавать по этому поводу). Ууу... Никакого йада не надо: освоение сего монструозного изделия - это сам себе йад.

Чем хорош ГЛ - это "низкоуровневостью": основами в нём являются такие примитивные сущности, что проще них даже нарочно не придумать. Всё сколько-нибудь более сложное надстраивается над ним вполне естественным образом.

А M$DX изначально пляшет от каких-то, пардон, СОМ-интерфейсов, каких-то придурковатых объектов, которые надо создавать и контролировать какими-то извращёнными способами. Конечно, и из этого можно сделать нечто приличноудобное для программирования, но: одно дело, когда даются элементарные детали, и ты их постепенно заворачиваешь в более сложные объекты (ГЛ), и совсем другое, когда даётся подборка каких-то изделий непонятной степени полуфабрикатности, и ты их крутишь в разные стороны, пытаясь совместить так, чтобы одним из уголков получившегося в итоге монструозного агрегата можно было делать элементарные вещи (M$DX). Вот это и есть наглядный практический аспект того, что называется "плохая архитектура" (плохая архитектура вообще является характерной чертой маздая).

Поэтому ГЛ, однозначно, рулит. Хотя бы своей удобоперевариваемостью (а значит, сокращаются временнЫе затраты, необходимые на подготовку специалиста, и расширяется круг лиц, способных воспринять технологию - так что тут ещё и экономический аспект).

#41
13:03, 18 сен 2005

SergeyN19
Executor
>Аналогично , начинал с ddraw потом d3d
Сочувствую...я же говорю-врагу DX6/7 не пожелаешь.
Тоже начинал с DX6...
Sbtrn. Devil
Ты считаешь,что человек ,не знающий COM-это подготовленный специалист?
Наш программист долго смеялся,читая твой пост.Рвался сам ответить,но я ему не дал-
нечего время тратить на такую ерунду.В конце концов,3D-это мое хобби,а не его.

#42
15:06, 18 сен 2005

Ну, COM в DirecX вообще не наблюдается, имхо :)
Так, немного интерфейса взято :)
Но вообще, всё логично достаточно.
А что инициализация большая - так зато низкий уровень у тебя в руках - как хочешь, так и инициализируй :)
Потом - все новые фичи в OGL сделаны в виде расширений, часто несовместимых - это-ж же-ж ужас...

#43
15:25, 18 сен 2005

UFOnaut
Немного -я бы сказал в разумных пределах-но соблюдать COM-правила  надо.
Типичный случай -Reset девайса по ALT-TAB,когда надо аккуратно убивать все ссылки на поверхность,например.
Меня в OGL больше пугает именно обилие всего-функций,например,копирования данных из тектуры в текстуру.
В DX реально одна функция-StretchRect .В OGL их куча-причем по разговорам типа
"ты эту функцию не используй,она плохая... " видно,что не все так просто и в OGL...

#44
16:27, 18 сен 2005

Да какая инициализация, вы что. Вот и вся инициализация:

#include <windows.h>
#include <d3d9.h>

#pragma comment(lib, "d3d9.lib")

int main()
{
	WNDCLASS wc = { };
	wc.hInstance = GetModuleHandle(NULL);
	wc.lpfnWndProc = &DefWindowProc;
	wc.lpszClassName = "Winnie Window Class";

	ATOM atom = RegisterClass(&wc);
	assert(atom);

	HWND hwnd = CreateWindow(
		"Winnie Window Class", "*", WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
		NULL, //hwnd parent
		NULL, //hMenu
		GetModuleHandle(NULL),
		0);

	assert(hwnd);

	ShowWindow(hwnd, SW_NORMAL);

	IDirect3D9 *pD3D = Direct3DCreate9(D3D_SDK_VERSION);
	assert(pD3D);

	D3DPRESENT_PARAMETERS d3dpp = { sizeof(D3DPRESENT_PARAMETERS) };
	d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
	d3dpp.Windowed = TRUE;
	d3dpp.EnableAutoDepthStencil = TRUE;
	d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

	IDirect3DDevice9 *pD3DD;

	HRESULT hr = pD3D->CreateDevice(
		D3DADAPTER_DEFAULT,
		D3DDEVTYPE_HAL,
		hwnd,
		D3DCREATE_SOFTWARE_VERTEXPROCESSING,
		&d3dpp, &pD3DD);

Что, на GL меньше?


>Чем хорош ГЛ - это "низкоуровневостью": основами в нём являются такие примитивные сущности, что проще них даже нарочно не придумать. Всё сколько-нибудь более сложное надстраивается над ним вполне естественным образом.

А что, в dx и gl разные сущности? может сущность "текстура" другая? или "шейдер"? или "индексный буфер"? или "вершинный буфер"? или ты для вывода используешь glBegin и glVertex?

>которые надо создавать и контролировать какими-то извращёнными способами.
А что, время жизни текстуры контролировать не надо (glDeleteTextures)?  Кстати, в отличие от gl  в dx интерфейсах унифицировынный контроль за временем жизни объектов. И можно для всех объектов использовать CComPtr<T>, а не писать обертки на каждый тип объекта.

и все шейдеры унифицированны, выстроены в линейку 1.1, 1.3, 1.4, 2.0, 3.0. Нет того безобразия, как в GL, когда на каждый GeForce и Radeon нужно использовать свои расширения с совершенно разным синтаксисом.

хая архитектура вообще является характерной чертой маздая).

>Поэтому ГЛ, однозначно, рулит. Хотя бы своей удобоперевариваемостью (а значит, сокращаются временнЫе затраты, необходимые на подготовку специалиста, и расширяется круг лиц, способных воспринять технологию - так что тут ещё и экономический аспект).


Когда только начинаешь программировать, то конечно glBegin/glVertex очень удобны и легкоусвояемы. А вот когда начинаешь программировать что-то серьезное, то придется все забыть и учиться заново. Причем получается уже гораздо более муторный и неудобный код чем в DX.
Пример:
А вот давай стравним затраты мозга на создание render-target текстуры в GL и DX на GF3?

Страницы: 1 2 3 4 510 Следующая »
ФлеймФорумОбщее

Тема в архиве.