resurected_timofei
Тут не идет разговор о том как можно сделать что-то используя написанный движок и всякие надстройки.
Пример со скайбоксом удачен тем, что Д3д уже есть загрузка текстур из файлов всех возможных типов,
причем как из файлов так и из памяти. Чтобы добавить такой функционал в ОпенГл надо постараться или воспользоваться сторонними библиотеками.
Еще претензии к Д3д - отсутствие Квадов и Лост Девайс.
И еще обьясните пожалуйста, почему у меня не компилируются Sample`s из ДX СДК.
Все самплы в которых есть DXUT. Куча ошибок (77). Ругается на неизвестность всяких XBUTTON1 и тд.
Студия 7.1 июньский сдк.
по ОткрытомуГЛ нет доков кроме Red Book? Для новичков? Ха-ха-ха... буду долго смеятся. =) Скажете NeHe( он же Народный учебник по OpenGL ) - аЦтой?
У-у-у, а если заокеанских братьев меньших вспомнить.
Итак.
pmg.org.ru - NeHe и другая шняга. О КривомИксе тоже есть.
ultimategameprogramming.com - туева хуча туторов.( X, GL, Raytracing )
И, наконец, умерший для нас =( gametutorials.net( там несколько халявных туторов есть )
SergeyN19
Квады...Может быть.Если на весь экран -проще через ID3DXSprite.
А так квад делается через D3DXCreatePolygon(pDevice,1,4,&Mesh,NULL);
Насчет примера из SDK-определенного ничего сказать не могу,но часто в
INCLUDE и LIB в студии уже есть какие-то *.h и *.lib из старых версий DX.
Полезно их убить или просто переписать из SDK в студию все новые *.h и *.lib
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
Fdooch
> Я считаю лучше D3D.
А я считаю что лучше на пляже с подругой загарать :) Mr_Devil, забей ты на эту 3D, это все лажа :)))
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 народ нызывает ацтоем или еще как...
resurected_timofei
Как увидели,какой у тебя сложный выбор-расслабились сразу же...
Могу только повторить-выбирая по внешним признакам и советам других-
упрешься в сучность...
resurected_timofei
Трудно сказать...
Или человек думает больше сам-и тогда он чужие советы
не слушает и от него ничего не добьешься,либо наоборот-
еще и навязывает другим,вместо того чтобы ...ну,понятно.
Типа экстраверт/интраверт.Хотя могут быть и другие варианты...
>По вам видно, как (и где!) расслабились... ;)
Угадал может быть,но частично.
Припаял пару корпусов с шагом 0.65мм(у молодежи не получается пока),
выпил коньячку для профилактики(потому как холодно нынче у нас)
и пошел домой,к жене и детям...
Mr_Devil
>В принципе, из темы вопроса все понятно... Direct3D vs OpenGL? С чего стоит
>стартовать новичку в игроделанье? Только пожалуйста, аргументируйте ответы...
Начал с ДХ, осваивать стал DirectDraw - начинало тошнить, всё обошлось тем, что просто поплевался и стал осваивать OpenGL...
Возможно текущий DX и изменился в лучшую сторону, незнаю, но нет желания на него переходить...
Executor
Аналогично , начинал с ddraw потом d3d но остановился на opengl. сейчас перехожу на д3д.
А я, помнится, ещё на 2-м д3д что-то пытался запрограммливать (лабу надо было сдавать по этому поводу). Ууу... Никакого йада не надо: освоение сего монструозного изделия - это сам себе йад.
Чем хорош ГЛ - это "низкоуровневостью": основами в нём являются такие примитивные сущности, что проще них даже нарочно не придумать. Всё сколько-нибудь более сложное надстраивается над ним вполне естественным образом.
А M$DX изначально пляшет от каких-то, пардон, СОМ-интерфейсов, каких-то придурковатых объектов, которые надо создавать и контролировать какими-то извращёнными способами. Конечно, и из этого можно сделать нечто приличноудобное для программирования, но: одно дело, когда даются элементарные детали, и ты их постепенно заворачиваешь в более сложные объекты (ГЛ), и совсем другое, когда даётся подборка каких-то изделий непонятной степени полуфабрикатности, и ты их крутишь в разные стороны, пытаясь совместить так, чтобы одним из уголков получившегося в итоге монструозного агрегата можно было делать элементарные вещи (M$DX). Вот это и есть наглядный практический аспект того, что называется "плохая архитектура" (плохая архитектура вообще является характерной чертой маздая).
Поэтому ГЛ, однозначно, рулит. Хотя бы своей удобоперевариваемостью (а значит, сокращаются временнЫе затраты, необходимые на подготовку специалиста, и расширяется круг лиц, способных воспринять технологию - так что тут ещё и экономический аспект).
SergeyN19
Executor
>Аналогично , начинал с ddraw потом d3d
Сочувствую...я же говорю-врагу DX6/7 не пожелаешь.
Тоже начинал с DX6...
Sbtrn. Devil
Ты считаешь,что человек ,не знающий COM-это подготовленный специалист?
Наш программист долго смеялся,читая твой пост.Рвался сам ответить,но я ему не дал-
нечего время тратить на такую ерунду.В конце концов,3D-это мое хобби,а не его.
Ну, COM в DirecX вообще не наблюдается, имхо :)
Так, немного интерфейса взято :)
Но вообще, всё логично достаточно.
А что инициализация большая - так зато низкий уровень у тебя в руках - как хочешь, так и инициализируй :)
Потом - все новые фичи в OGL сделаны в виде расширений, часто несовместимых - это-ж же-ж ужас...
UFOnaut
Немного -я бы сказал в разумных пределах-но соблюдать COM-правила надо.
Типичный случай -Reset девайса по ALT-TAB,когда надо аккуратно убивать все ссылки на поверхность,например.
Меня в OGL больше пугает именно обилие всего-функций,например,копирования данных из тектуры в текстуру.
В DX реально одна функция-StretchRect .В OGL их куча-причем по разговорам типа
"ты эту функцию не используй,она плохая... " видно,что не все так просто и в OGL...
Да какая инициализация, вы что. Вот и вся инициализация:
#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?
Тема в архиве.