Я хочу делать проекты, чтобы сделать мое резюме более привлекательным для игровых компаний. Поэтому я собираюсь начать покупать книги. Но я не знаю, как читать DirectX 9 или 10 api книг, чтобы начать с. DirectX10 отличная, но кажется, что индустрия медленно двигается до 10. Так что я должен использовать 9 или пойти с 10??
DirectX 9 или DirectX 10 для начинающих?
Ответ 1
Я бы предложил изучить основы с помощью directx9, а затем быстро перейти к dx11. DirectX11 сложнее начать, чем DirectX9, потому что он немного более сложный, но также и многие функции утилиты в D3DX больше не существуют или были перенесены в исходный код, например, в структуру эффектов. Это не плохо, но это делает его значительно более сложным, чтобы учиться, поскольку вам нужно учиться намного больше вещей сразу.
Проведите 2 или 3 недели обучения DX9, затем перейдите в DX11 для "реальной" работы: P
Изучите базовый DX9, используя фиксированный конвейер и d3dx для загрузки моделей и т.д. Это намного проще, чем DX11 и гораздо лучше документировано, и вы получите гораздо больше треугольник, а затем модель на экране. Играйте с этим, пока вы не поймете основные понятия и трансформации.
Но затем перепишите все это, используя только шейдеры. Вы должны будете использовать их в DX10/11 в любом случае, но это намного легче узнать, когда у вас уже есть рабочая структура кода, и гораздо проще получить эту работу в DX9.
Как только вы начнете работать, изучите DX11. Вам придется переключать математические библиотеки. Вам придется изобретать свои собственные форматы моделей и загрузчики. Вам придется либо изобретать свою собственную инфраструктуру эффектов, либо использовать примерный пример, но им все намного проще, теперь вы уже знаете основы 3d и программирующих шейдеров.
Ответ 2
TBH дальше к комментарию OneOfOne, если вы знаете, как делать 3D-разработку в GL, D3D9, D3D10 или D3D11, тогда вы можете передать эти навыки любому из других с небольшой работой.
Лично я бы нацелился на D3D11 так, как вы изучаете передний край. Вы обнаружите, что сможете выполнять GL, D3D9 или D3D10 с небольшой работой. Достаточно много работы над теорией, и вы обнаружите, что ее даже не трудно передать навыки полностью программному движку.
Ответ 3
Если вы намереваетесь научиться навыкам, которые вы будете использовать в игровой индустрии, придерживайтесь DirectX 9. Поскольку DirectX 10 и 11 требуют Vista или Window 7, разработчики игр по-прежнему в основном игнорируют их и нацеливают DirectX 9 на для поддержки Windows XP.
Говоря это, на самом деле не важно, с чего вы начинаете. Различия не так велики. Если вы понимаете концепции 3D API и как работает конвейер GPU, вы можете с минимальными усилиями поднять любой из трех или даже OpenGL.
Ответ 4
Факт, вам нужно изучить оба.
Пока 50% игроков все еще находятся на WinXP, вам нужно будет иметь возможность программировать в Direct3D9.
D3D9 не легче начать с D3D10/11. Его те же принципы, с размещаемыми вершинами, рассчитанными нормалями и сетками. Создаете ли вы структуру ID3D11BlendState
или вызываете IDirect3DDevice9::SetRenderState()
, ее ту же концепцию, просто разные способы ее выполнения.
После работы с d3d11 пару дней, я стал думать о нем лучше, чем DX9 во многих отношениях. Во-первых, вы можете использовать полные кепки GPU, включая геометрические шейдеры. Во-вторых, это заставляет вас полностью понять графический конвейер, чтобы хоть что-то рисовать (обратите внимание, как функции называются после этапа используемого конвейера: здесь: (IA*
fcns: этап ввода-сборки, OM*
fcns: этап слияния с выходом и т.д.)). Это может привести к немного большей начальной стартовой кривой, но как только вы ее получите, ее не сложнее, чем D3D9, и это лучше, поскольку само название функций помогает концепциям придерживаться.
Итак, продолжайте и то и другое, и изучение их в тандеме может помочь уменьшить объем усилий, которые вы тратите на изучение устаревших API/методов работы с DX9 (то есть вы действительно хотите потратить больше времени на использование шейдеров и не использовать участок с фиксированной функциональной связью DX9 слишком много).
Ответ 5
Вы можете проверить книги Luna для DX9/DX11 (предлагаю начать с 11). Вы можете проверить http://www.rastertek.com/tutdx11.html, но он не объясняет все, чтобы вы могли пойти в книгу Луны, чтобы узнать, что есть с этими функциями или свойствами
Ответ 6
За некоторыми исключениями, DX10 - это просто бесплатный DX9. Например, DX9 построил опции для рендеринга Flatshaded, Textured или Shader. В DX10 эти параметры исчезли, вам всегда нужно использовать настоящий шейдер. Если вы хотите делать flatshading, напишите шейдер HLSL, который делает плоское затенение.
Поэтому я предлагаю вам изучить DX10 (или DX11). Вы сможете быстро адаптироваться к DX9, но с более современным стилем кодирования, не используя устаревшие функции. Они могут быть путаными, поэтому DX10 сосредоточит вас на соответствующих вещах.
Если вы настоящий новичок, а создание вершинного буфера для создания одного треугольника вас сбивает с толку (в качестве реального 3D-программиста вы больше не интересуетесь одиночными треугольниками), я даже предложил бы начать с OpenGL. У вас будет более быстрый успех, но на самом деле это может быть немного отвлекающим, как DX9-Legacy, если вы хотите сосредоточиться на современном 3D-кодировании.
Ответ 7
Да, не тратьте время на DX10, он никогда не принимался в качестве отраслевого стандарта в течение какого-то периода времени, не было никаких достаточно больших изменений, чтобы гарантировать, что люди могут перейти с DX9, но для DX11 там было.
Ответ 8
Я предлагаю directx 11, нет причин, по моему мнению, тратить время на устаревшие функции или методы. Обучающие шейдеры с самого начала сделают вещи более понятными.
Ответ 9
Попробуйте сделать образцы из папки с образцами как 9, так и 10, и если ваш компьютер сможет ее поддерживать, 11. Это то, что я делаю.