DirectX 11 SDK
| |
Clairdelune | Дата: Суббота, 14 Июля 2012, 17:16 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Где можно украсть DirectX 11 SDK? Ну чтоб на C++ делать графику на DirectX 11. Гуглил и яндексил. Выдаёт DirectX 9 под видом DirectX 11...
|
|
| |
Archido | Дата: Суббота, 14 Июля 2012, 17:28 | Сообщение # 2 |
Сэнсэй
Сейчас нет на сайте
| Точно не туда. У Microsoft есть, там и 9 и 10 и 11. SDK один, но заголовки и примеры под все версии.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 08:36 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| А есть книги по DX11 на русском? Добавлено (15.07.2012, 08:36) --------------------------------------------- Я вот на эту книжку жаловаться буду!
Во второй главе мы пишем вот такой вот код: Code #include<Windows.h>
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmdLine, int cmdShow ) { UNREFERENCED_PARAMETER( prevInstance ); UNREFERENCED_PARAMETER( cmdLine ); WNDCLASSEX wndClass = { 0 }; wndClass.cbSize = sizeof( WNDCLASSEX ) ; wndClass.style = CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WndProc; wndClass.hInstance = hInstance; wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); wndClass.hbrBackground = ( HBRUSH )( COLOR_WINDOW + 1 ); wndClass.lpszMenuName = NULL; wndClass.lpszClassName = "DX11BookWindowClass"; if( !RegisterClassEx( &wndClass ) ) return -1; RECT rc = { 0, 0, 640, 480 }; AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE ); HWND hwnd = CreateWindowA( "DX11BookWindowClass", "Blank Win32 Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc. left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL ); if( !hwnd ) return -1; ShowWindow( hwnd, cmdShow ); // Demo Initialize MSG msg = { 0 }; while( msg.message != WM_QUIT ) { if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } // Update // Draw } // Demo Shutdown return static_cast<int>( msg.wParam ); }
Выдаёт: Quote (Вывод - Построение)
1>------ Построение начато: проект: DX02, Конфигурация: Debug Win32 ------ 1>Построение начато 15.07.2012 11:33:32. 1>InitializeBuildStatus: 1> Обращение к "Debug\DX02.unsuccessfulbuild". 1>ClCompile: 1> main.cpp 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) в функции _wWinMain@16 1>C:\Users\<Это вам не интересно>\Documents\Visual Studio 2010\Projects\DX02\Debug\DX02.exe : fatal error LNK1120: 1 неразрешенных внешних элементов 1> 1>СБОЙ построения. 1> 1>Затраченное время: 00:00:01.12 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Как бороться?
|
|
| |
404notfound | Дата: Воскресенье, 15 Июля 2012, 08:40 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Clairdelune, у тебя не написано само тело функции WndProc. В книге дальше должен быть написан ее код.
|
|
| |
Archido | Дата: Воскресенье, 15 Июля 2012, 08:42 | Сообщение # 5 |
Сэнсэй
Сейчас нет на сайте
| нужна ф-ция WndProc, неужели нет ее? Можно сделать так: "wndClass.lpfnWndProc = DefWindowProc" . Но это не совсем правильно
Quote (Clairdelune) А есть книги по DX11 на русском? Самая лучшая книга по DX11 - это документация. Если знаешь 9-тый DX, то проблем не будет. А если не знаешь, то желательно сначала поучить DX9, ибо 11-тый посложнее будет.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Воскресенье, 15 Июля 2012, 08:44 |
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 08:55 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Один тёмный личност сказал, что лучше сразу DX11. Добавлено (15.07.2012, 08:55) ---------------------------------------------
Quote (404notfound) Clairdelune, у тебя не написано само тело функции WndProc. В книге дальше должен быть написан ее код. О, спасибо!
|
|
| |
Archido | Дата: Воскресенье, 15 Июля 2012, 09:13 | Сообщение # 7 |
Сэнсэй
Сейчас нет на сайте
| Quote (Clairdelune) Один тёмный личност сказал, что лучше сразу DX11. И чем аргументировал? Ибо там чтобы простой квадрат нарисовать нужно писать кучу кода и использовать шейдеры, без особого опыта работы с другими GAPI разобраться будет ой как не просто. Т.е. ты сейчас идешь по пути наибольшего спопротивления.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Нохчи | Дата: Воскресенье, 15 Июля 2012, 09:27 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Кстати там wndproc кривой по-моему была, будь внимателен когда код копипастить будешь.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 09:53 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Archido,
Quote (Я) Если я сейчас изучу DirectX 9, то сложно ли будет переходить на DirectX 11, или там почти такой же код? Quote (ArchiDevil) Нет. Совершенно другой подход и другой код. Небо и земля, фактически. Рекомендую сразу DX10/11.
Добавлено (15.07.2012, 09:53) --------------------------------------------- Не, ну не в ладах я с английским... Вторая половина второй главы достаточно тёмная... Есть где-нибудь ЭТО на русском? Или хотя бы полный код того, что там делается.
Сообщение отредактировал Clairdelune - Воскресенье, 15 Июля 2012, 09:53 |
|
| |
warzes | Дата: Воскресенье, 15 Июля 2012, 10:01 | Сообщение # 10 |
участник
Сейчас нет на сайте
| Quote (Clairdelune) Как бороться? научиться программировать... Извини, но серьезно, чтобы приступить к изучению DirectX/OpenGL, надо сначала выучить язык программирования и научиться понимать - что это за ошибки выдает твой компилятор, разобраться с тем - как дебажить в студии свой проект
Quote (Archido) Самая лучшая книга по DX11 - это документаци Не согласен. Раньше, во времена Dx9 - да, там хорошо все было описано. А сейчас откроешь описание какой-нибудь структуры, а там невразумительная строчка по которой совершенно ничего не понятно: Quote The ID3D11DeviceContext interface represents a device context which generates rendering commands. Вот попробуй из этой строчки понять - что конкретно делает ID3D11DeviceContext, и когда его надо применять:)
Quote (Archido) А если не знаешь, то желательно сначала поучить DX9, ибо 11-тый посложнее будет. И будет писать в dx9-стиле на DX11... Потом будет на форумах спрашивать "куда делся IDirect3DVertexBuffer9 (это так, для примера)..." Dx9 и Dx11 - это разные GAPI, с совершенно разной философией.Добавлено (15.07.2012, 10:01) ---------------------------------------------
Quote (Clairdelune) Есть где-нибудь ЭТО на русском? Тут, на английском многие книги не достать (борьба с варезом, такая борьба), а ты ищешь на русском:)
Мой блог Вики DirectX
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 10:19 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Но всё-таки есть на русском?
|
|
| |
Нохчи | Дата: Воскресенье, 15 Июля 2012, 10:20 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Нет.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
goldsphere | Дата: Воскресенье, 15 Июля 2012, 10:21 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Quote (warzes) И будет писать в dx9-стиле на DX11... Потом будет на форумах спрашивать "куда делся IDirect3DVertexBuffer9 (это так, для примера)..." Dx9 и Dx11 - это разные GAPI, с совершенно разной философией. Вроде мелкомягкие его низкоуровневый код переписывали почти с нуля.
FinderX - Android Аркада
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 10:33 | Сообщение # 14 |
был не раз
Сейчас нет на сайте
| Или хотя бы полный код того, что там делается (в 2-й главе книги)?
Сообщение отредактировал Clairdelune - Воскресенье, 15 Июля 2012, 10:38 |
|
| |
Нохчи | Дата: Воскресенье, 15 Июля 2012, 10:36 | Сообщение # 15 |
заслуженный участник
Сейчас нет на сайте
| Quote (Clairdelune) Или хотя бы полный код того, что там делается (в 2-й главе книги)? В книге приводится полный код, WndProc там описывается после объяснения кода из WinMain. Да и к книге прилагался диск.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
warzes | Дата: Воскресенье, 15 Июля 2012, 10:37 | Сообщение # 16 |
участник
Сейчас нет на сайте
| Quote (goldsphere) Вроде мелкомягкие его низкоуровневый код переписывали почти с нуля. там все с нуля. В основе DX лежит прослойка DXGI (вроде бы - я тоже не спец ) Именно она и работает с видеокартой (отсюда кстати не совместимость со старыми виндами - там нет этого слоя). Сам же DX11 - это абстрактный уровень, именно отсюда и получилась такая фича - что если видеокарта не поддерживает новый DX, то при определенных параметрах - проект все равно будет работать как надо на хардваре (хоть и немного урезанным функционалом). эта фича зовется featurelevel (кста, в OGL такого нет - в результате приложение на OGL4 не запустить на видеокарте держащей только OGL3). Кроме того - очень многое было просто выкинуто (тот самый IDirect3DVertexBuffer9 - в DX9 для каждого буфера был свой интерфейс, в DX11 для всех буферов один общий интерфейс). Также - DX9 был все таки сосредоточен на фиксированном рендере. Тогда как DX11 - на программируемом (то есть на шейдерах). А это и есть самое главное отличие - я много видел всяких движков в которых люди переносили свой опыт DX9 на DX11 - знаете, не очень красиво и коряво получается. Или вот другой пример - Ogre, именно из-за разной философии, для Ogre до сих пор не могут сделать поддержку DX11, хотя начали ее делать еще в 2007 году (DX10)... Только потому что слишком привязаны к фиксированному функционалу и вся ихняя архитектура не совместима с DX11... именно поэтому лично я не советую изучать DX9 чтобы потом изучать DX11
Мой блог Вики DirectX
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 10:41 | Сообщение # 17 |
был не раз
Сейчас нет на сайте
| А если изучить DX10, то насколько сложным будет переход на DX11? Добавлено (15.07.2012, 10:41) ---------------------------------------------
Quote (Нохчи) Да и к книге прилагался диск. Где скачать можно?
|
|
| |
Нохчи | Дата: Воскресенье, 15 Июля 2012, 11:07 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| Прямая ссылка
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Clairdelune | Дата: Воскресенье, 15 Июля 2012, 13:17 | Сообщение # 19 |
был не раз
Сейчас нет на сайте
| А если изучить DX10, то насколько сложным будет переход на DX11?
|
|
| |
Archido | Дата: Воскресенье, 15 Июля 2012, 13:55 | Сообщение # 20 |
Сэнсэй
Сейчас нет на сайте
| Quote (warzes) Не согласен. Раньше, во времена Dx9 - да, там хорошо все было описано. А сейчас откроешь описание какой-нибудь структуры, а там невразумительная строчка по которой совершенно ничего не понятно: Это как раз подтверждает, что нужно сначала DX9 (даже OGL) осилить, ибо тогда все понятно по одной строчке . Да и семплы в комплекте есть, умея разбираться в чужом коде, можно легко подчерпнуть нужное от туда. При должных знаниях и опыте переход DX9 -> DX11 делается за неделю, и не надо тут ничего выдумывать, что это сложно или что-то там непонятно. Все прекрасно там понятно.
Когда впервые работаешь с GAPI, то ясное дело учишься по книжкам где тебе все расжевывают и в рот кладут, а ты в основном делаешь копипаст и радуешься. Позже уже с опытом и помощью книжек ты начинаешь понимать как это оно вообще работает и потихой разбираешься. После этого другой GAPI подается изучению в разе проще. Что OpenGL, что DX9, что DX11 - все одно, только интерфейсы разные. Смысл один: "вершины, текстуры, буферы, шейдеры. создать буфер, забиндить буфер, забиндить текстуру, нарисовать". Инструмент отличается да, каждый на свой манер, но зная как ВООБЩЕ пользоваться любым инструментом - переучиться на другой большого труда не составит.
Я сам в свое время изучал OpenGL по книжкам, писал на нем много, а после для DX9 и DX11 хватило документации и семплов. Проверено на себе.
Quote (warzes) Также - DX9 был все таки сосредоточен на фиксированном рендере. Тогда как DX11 - на программируемом (то есть на шейдерах). А это и есть самое главное отличие - я много видел всяких движков в которых люди переносили свой опыт DX9 на DX11 - знаете, не очень красиво и коряво получается. Или вот другой пример - Ogre, именно из-за разной философии, для Ogre до сих пор не могут сделать поддержку DX11, хотя начали ее делать еще в 2007 году (DX10)... Только потому что слишком привязаны к фиксированному функционалу и вся ихняя архитектура не совместима с DX11... Ты мешаешь все в одну кучу, одно дело разбираться и уметь пользоваться определенным GAPI (DX9 и DX11) и другое дело, когда у тебя есть здоровенная махина - движок, архитектура которого изначально заточена под определенный GAPI. Во втором случае есть проблемы, но вообще это заранее говорит о не самой лучшей архитектуре. А в первом перевести демку с одного на другой - дело нескольких дней. Небольшую игрушку - неделю, полторы. Мы же не говорим о портировании ААА тайтла, правда?
+ DX11 железо и\или Win7 не у всех есть, да и вообще может человек будет потом Indie игры делать, тогда DX11 сразу же отправится в баню.
Quote (warzes) Потом будет на форумах спрашивать "куда делся IDirect3DVertexBuffer9 (это так, для примера)..." Dx9 и Dx11 - это разные GAPI, с совершенно разной философией. Если не хватет ума заглянуть в документацию и посмотреть, куда и чего там делось, а по ходу еще и в семплы - узнать как люди делают и что изменилось, то лучше сразу юзать GameMaker. Хм, насчет философии. В 11-ом убрали ффп, добавили плюшек, немного изменили интерфейсы, и вот она новая философия, да
Quote (warzes) именно поэтому лично я не советую изучать DX9 чтобы потом изучать DX11 Ога, пусть мучается, пишет шейдеры и биндит TargetView'ры, чтобы квадрат нарисовать. Копипастом и вообще ни капли не понимая, что происходит. Зато в ногу со временем, чо. И без "DX9 стайла"
Да и еще, выдуманный "DX9 стайл" на самом деле только в пользу. И еще неплохо знать OGL в комплекте. Таким образом представляя общую картину, можно написать отличную прослойку между несколькими GAPI и подсистемами движками верхнего уровня под общий манер, т.н. MultiRender. Это будет правильная архитектура. Но, это не для новичков, конечно
Quote (Clairdelune) А если изучить DX10, то насколько сложным будет переход на DX11? Это почти одно и тоже.
P.S. Я бы вообще первым OGL учил
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Воскресенье, 15 Июля 2012, 13:59 |
|
| |
|