DirectX 9 или DirectX 10 для начинающих? - PullRequest
10 голосов
/ 03 апреля 2010

Я хочу делать проекты, чтобы сделать мое резюме более привлекательным для игровых компаний. Итак, я собираюсь начать покупать книги. Но я не знаю, чтобы начать читать книги о DirectX 9 или 10 API. DirectX10 великолепен, но кажется, что индустрия медленно продвигается к 10. Поэтому я должен использовать 9 или идти с 10 ??

Ответы [ 9 ]

14 голосов
/ 04 апреля 2010

Я бы предложил изучить основы с использованием directx9, а затем быстро перейти к dx11. DirectX11 труднее начать, чем DirectX9, потому что он немного сложнее, но многие функции утилит в D3DX больше не существуют или перенесены в исходный код, такой как структура эффектов. Это неплохая вещь, но она значительно усложняет процесс обучения, так как вам нужно выучить гораздо больше вещей одновременно.

Потратьте 2 или 3 недели на изучение DX9, затем перейдите к DX11 для «настоящей» работы: P

Изучите базовый DX9, используя фиксированный конвейер и d3dx для загрузки моделей и т. Д. Это намного проще, чем DX11, и намного лучше задокументировано, и вы получите треугольник, а затем модель на экране намного быстрее , Поиграйте с этим, пока не полностью поймете основные понятия и преобразования.

Но затем перепишите все это, используя только шейдеры. В любом случае вам нужно будет использовать их в DX10 / 11, но намного легче учиться, когда у вас уже есть работающая структура кода, и намного проще получить это, работая в DX9.

Как только у вас это заработает, изучите DX11. Вам придется переключать математические библиотеки. Вам придется изобретать свои собственные форматы моделей и загрузчиков. Вам придется либо придумать собственную структуру эффектов, либо использовать пример, но все они стали намного проще, теперь вы уже знаете основы 3d и программирования шейдеров.

3 голосов
/ 03 апреля 2010

TBH в дополнение к комментарию OneOfOne, если вы знаете, как выполнять 3D-разработку в GL, D3D9, D3D10 или D3D11, тогда вы можете передать эти навыки любому другому с небольшой работой.

Лично я бы нацелился на D3D11, так как вы учитесь передовым технологиям. Вы обнаружите, что сможете сделать GL, D3D9 или D3D10 с небольшой работой. Достаточно поработайте над теорией, и вы обнаружите, что перенести навыки на полностью программный движок не так уж и сложно.

2 голосов
/ 24 апреля 2010

Если вы действительно хотите освоить навык, который вы бы использовали в игровой индустрии, используйте DirectX 9. Поскольку для DirectX 10 и 11 требуется Vista или Window 7, разработчики игр по-прежнему в основном игнорируют их и ориентируются на DirectX 9 Чтобы иметь поддержку Windows XP.

Как говорится, на самом деле не имеет значения, с чего начать. Различия не так велики. Если вы понимаете концепции, лежащие в основе 3D API, и то, как работает конвейер графического процессора, вы можете выбрать любой из трех или даже OpenGL с минимальными усилиями.

1 голос
/ 09 июля 2011

На самом деле вам нужно выучить оба.

Пока 50% игроков все еще используют WinXP , вам понадобится программировать в Direct3D9.

D3D9 не легче начать с , чем D3D10 / 11. Это те же принципы, с размещением вершин, вычислением нормалей и отображением сеток. Создаете ли вы структуру ID3D11BlendState или вызываете IDirect3DDevice9::SetRenderState(), это одна и та же концепция, просто разные способы сделать это.

Поработав с d3d11 пару дней, я стал думать о нем лучше, чем DX9, во многих отношениях. Например, вы можете использовать полный набор графических процессоров, включая геометрические шейдеры. Во-вторых, это заставляет вас полностью понимать графический конвейер, чтобы даже рисовать что-либо (обратите внимание, как функции называются в зависимости от стадии конвейера, на которую они влияют: здесь : (IA* fcns: вход-ассемблерная стадия, OM* fcns: этап слияния и т. Д.)). Это может привести к чуть большей начальной кривой запуска, но как только вы ее получите, она будет не сложнее, чем D3D9, и будет лучше , поскольку само наименование функций помогает придерживаться концепций.

Так что приступайте к обоим, и изучение их в тандеме может помочь уменьшить количество усилий, которые вы тратите на изучение устаревших API / методов работы с DX9 (то есть вы действительно хотите тратить больше времени на использование шейдеров и не используйте секцию с фиксированными функциями конвейера в DX9 слишком часто).

0 голосов
/ 02 июня 2016

Попробуйте выполнить сэмплы из папки с примерами 9 и 10, и, если ваш компьютер может это поддерживать, 11. Это то, что я делаю.

0 голосов
/ 29 июля 2014

Я предлагаю directx 11, по моему мнению, нет причин тратить время на устаревшие функции или методы. Изучение шейдеров с самого начала сделает вещи более понятными

0 голосов
/ 31 августа 2013

Да, не тратьте свое время на DX10, он никогда не был принят в качестве отраслевого стандарта в течение какого-либо периода времени, не было достаточно больших изменений, чтобы гарантировать людям переход с DX9, но для DX11 было.

0 голосов
/ 19 апреля 2013

За некоторыми небольшими исключениями, DX10 - это просто устаревший бесплатный DX9. Например, в DX9 были встроены опции для рендеринга Flatshaded, Textured или использования Shader. В DX10 эти опции пропали, вам всегда нужно использовать настоящий шейдер. Если вы хотите сделать затенение плоскими, напишите шейдер HLSL, который выполняет плоское затенение.

Поэтому я бы посоветовал вам изучить DX10 (или DX11). Вы сможете быстро перейти на DX9, но с более современным стилем кодирования, не используя устаревшие функции. Они могут немного сбивать с толку, поэтому DX10 сфокусирует вас на важных вещах.

Если вы настоящий новичок, и настройка буфера вершин для создания одного треугольника сбивает вас с толку (как настоящий 3D-программист, вы больше не интересуетесь отдельными треугольниками), я бы даже предложил начать с OpenGL. У вас будет более быстрый успех, но на самом деле это может немного отвлекать от DX9-Legacy, если вы хотите сосредоточиться на современном 3D-кодировании.

0 голосов
/ 05 января 2013

Вы можете проверить книги Луны на DX9 / DX11 (я предлагаю вам начать с 11). Вы можете проверить http://www.rastertek.com/tutdx11.html, но он не все объясняет, поэтому вы можете зайти в книгу Луны, чтобы узнать, что с этими функциями или свойствами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...