БитТоррент . Это полностью поворачивает то, что ранее походило на очевидно неизменное правило о его голове - время, которое требуется для единственного человека для загрузки файла по Интернету, растет в пропорции к числу людей, загружающих его. Это также обращается к дефектам предыдущих одноранговых решений, особенно вокруг 'leeching', способом который является органическим к самому решению.
БитТоррент изящно поворачивает то, что обычно является недостатком - многие пользователи, пытающиеся загружать единственный файл одновременно - в преимущество, распределяя файл географически как естественную часть процесса загрузки. Его стратегия оптимизации использования пропускной способности между двумя коллегами препятствует вожделению как побочному эффекту - это на благо всех участников для осуществления регулировки.
Это - одна из тех идей, которая, как только кто-то еще изобретает его, кажется простой, если не очевидный.
Первый вопрос: у вас Windows? Если нет, используйте OpenGL.
Если вы работаете в Windows, это зависит от вашего вкуса. API-интерфейсы разные, но требуемые концепции очень похожи как для OpenGL, так и для DirectX. Большинство вещей поддерживаются обоими, хотя работают они немного по-разному.
Microsoft предоставляет довольно много примеров и достойную среду, которую вы можете использовать для DirectX (9 или 10), что может облегчить начало работы.
] При этом, если вы ориентируетесь только на Windows Vista / Win7, переход на DirectX 10 может облегчить жизнь. Многие неприятности в DX9 и ранее были удалены в DX10, а API стал немного более чистым.
При этом, если это для игры, я Я рекомендую использовать механизм промежуточного программного обеспечения, такой как Ogre , вместо того, чтобы писать непосредственно в DirectX ИЛИ OpenGL. Это сделает вашу жизнь намного проще, особенно во время учебы.
Я не использовал DirectX, но OpenGL довольно прост, и на NeHe есть несколько хороших руководств для начинающих. Кроме того, если вы даже хотите перейти на кроссплатформенность, вам понадобится OpenGL.
Однако DirectX - это не только графическая библиотека, вы также можете использовать его для звука и т. Д., Так что, вероятно, стоит изучить его.
Если все дело в том, чтобы как можно быстрее начать работу, я бы порекомендовал OpenGL на графическом процессоре NVidia. Вы можете бросить в него что угодно, и он что-то отобразит. Однако, если вы хотите добиться достойной производительности при минимальных усилиях по программированию, я бы рекомендовал Direct3D. В OpenGL существует слишком много способов сделать что-то, и новички наверняка первыми обнаружат медленные пути, поскольку они описаны во многих древних руководствах (см. NeHe). Кроме того, отладка приложений OpenGL болезненна, хотя такие инструменты, как gDEBugger, могут помочь.
Как указали некоторые другие люди, если вы планируете портировать вашу «Игру» на другие платформы, отличные от Windows, вам лучше начать использовать OpenGL.
Если это простая 2D-игра, и вам не нужна поддержка 3D на данный момент, SDL будет лучшим выбором, позже вы можете объединить «SDL» и «OpenGL» вместе. (вы можете напрямую использовать openGL из SDL, у него даже есть собственный заголовок в SDL).
В то же время DirectX предлагает функции, которые ни OpenGL, ни SDL не могут предоставить вам. OpenGL сильно отстает от DirectX. [OpenGL 3.0 - это не более чем инкрементное обновление, API не сильно изменился с 2.x].
Так что, если вы планируете написать игру для Windows, просто используйте «DirectX», если не «OpenGL» и "Sdl".
Наконец, если вы не В поисках головной боли просто используйте GameEngine, например C4 Engine . Поверьте мне, когда вы выбираете 3D, у вас нет выбора, поскольку существует очень много тем, на то, чтобы «копать» и «изучать» потребуется много времени.
Если у вас есть некоторый опыт работы с COM, и это не вызывает у вас головной боли, я бы порекомендовал DirectX, просто потому, что SDK имеет много хороших примеров / руководств прямо из коробки. Если вам лучше больше нравится программирование в стиле C или вы не понимаете, что такое COM, то я бы сказал OpenGL.
Если это просто 2D, то, возможно, Возможно, стоит изучить SDL , который уже является кроссплатформенным и кажется довольно простым для изучения. В сети есть много руководств, но я помню один конкретный сайт Lazy Foo's SDL Tutorials . Вы также можете смешивать OpenGL с SDL, для этого также есть учебники.
Если вы не хотите использовать SDL, а вы работаете в Windows, я бы порекомендовал DirectX. Я признаю, что выбор между ними в конечном итоге заканчивается войной пламени практически повсюду в Интернете, но я понимаю, что DirectX ориентирован на разработчиков игр, поэтому вы найдете множество служебных библиотек, функций, и классы, которые могут облегчить выполнение различных задач. С OpenGL у вас будет возможность писать кросс-платформенный код при условии, что вспомогательные функции, такие как загрузка изображений, также являются кроссплатформенными ( Для которых действительно существуют кроссплатформенные библиотеки ).
Итак, мое дно строка: Оба в порядке, OpenGL дает вам кроссплатформенный код ( При условии, что вы его напишете ), а DirectX дает вам больше инструментов и библиотек, ориентированных на разработку игр.
Я признаю, что выбор между ними в конечном итоге заканчивается войной пламени практически повсюду в Интернете, но я понимаю, что DirectX ориентирован на разработчиков игр, поэтому вы найдете множество служебных библиотек, функций, и классы, которые могут облегчить выполнение различных задач. С OpenGL у вас будет возможность писать кросс-платформенный код при условии, что вспомогательные функции, такие как загрузка изображений, также являются кроссплатформенными ( Для которых действительно существуют кроссплатформенные библиотеки ).Итак, мое дно строка: Оба в порядке, OpenGL дает вам кроссплатформенный код ( При условии, что вы его напишете ), а DirectX дает вам больше инструментов и библиотек, ориентированных на разработку игр.
Я признаю, что выбор между ними в конечном итоге заканчивается войной пламени практически повсюду в Интернете, но я понимаю, что DirectX ориентирован на разработчиков игр, поэтому вы найдете множество служебных библиотек, функций, и классы, которые могут облегчить выполнение различных задач. С OpenGL у вас будет возможность писать кросс-платформенный код при условии, что вспомогательные функции, такие как загрузка изображений, также являются кроссплатформенными ( Для которых действительно существуют кроссплатформенные библиотеки ).Итак, мое дно строка: Оба в порядке, OpenGL дает вам кроссплатформенный код ( При условии, что вы его напишете ), а DirectX дает вам больше инструментов и библиотек, ориентированных на разработку игр.
но я понимаю, что DirectX ориентирован на разработчиков игр, поэтому вы найдете множество служебных библиотек, функций и классов, которые могут облегчить выполнение различных задач. С OpenGL у вас будет возможность писать кросс-платформенный код при условии, что вспомогательные функции, такие как загрузка изображений, также являются кроссплатформенными ( Для которых действительно существуют кроссплатформенные библиотеки ).Итак, мое дно строка: Оба в порядке, OpenGL дает вам кроссплатформенный код ( При условии, что вы его напишете ), а DirectX дает вам больше инструментов и библиотек, ориентированных на разработку игр.
но я понимаю, что DirectX ориентирован на разработчиков игр, поэтому вы найдете множество служебных библиотек, функций и классов, которые могут облегчить выполнение различных задач. С OpenGL у вас будет возможность писать кросс-платформенный код при условии, что вспомогательные функции, такие как загрузка изображений, также являются кроссплатформенными ( Для которых действительно существуют кроссплатформенные библиотеки ).Итак, мое дно строка: Оба в порядке, OpenGL дает вам кроссплатформенный код ( При условии, что вы его напишете ), а DirectX дает вам больше инструментов и библиотек, ориентированных на разработку игр.