.::Russian Blood Community Forum::. »Life Is Real » Флейм » Привед :) |
Страниц (4): « 1 2 [3] 4 » |
51. LifeKILLED - 07 Марта, 2010 - 06:05:49 |
>> Обычно делают так Да, я именно так и собираюсь сделать. Зачем мне драйвер? Я Это не для меня. У меня друг микроконтроллеры программировать умеет, а мне это даже не интересно. Я даже свой центральный процессор разрабатывать не собираюсь, как это ни странно, и даже видеокарту Я просто хочу накрапать пару функций, которые растеризуют спрайты в массив пикселов. В конце ясно дело подключу это к Битмапу, Брашу и выведу через ЦДЦ, что мне еще остается. >> Не расценивай это как агитацию за DDraw У меня дома лежит книжка по DirectX, там пишут, что можно создать объект любой версии, седьмой или 11 без разницы и пользоваться. Все хранится. Новая версия не заменяет старую. Эти Директы даже устанавливаются странным образом. Чтобы поиграть в Dune 2000 надо обязательно установить еще и 6-й директ перед установкой 9-го (правда давно я так не извращался, дело было в голой XP, в семерке может быть уже это исправили, там же совместимость крутая типо) |
52. jm - 07 Марта, 2010 - 06:11:20 |
Для того, чтобы поиграть в Dune2000 я не ставил Dx6. Честно. Все работало. Дорогая редакция, что я делаю не так ? ps Я там еще много приписал к предыдущему посту Надо синхронизироваться (Отредактировано автором: 07 Марта, 2010 - 06:11:53) |
53. LifeKILLED - 07 Марта, 2010 - 06:12:22 |
Про DirectDraw пишут, что там очень быстрая скорость обмена с видеопамятью. Все равно буду писать софтверный двиг, потому как видеопамять видеопамятью, а к оперативной памяти из процессора доступ тоже нехилый ))))) |
54. jm - 07 Марта, 2010 - 06:20:49 |
DirectDraw хорош тем, что то, что ты собираешься разрабатывать сам в нем уже содержится. Причем работает это чрезвычайно быстро. И однозначно это будет работать быстрее, чем твоя софтверная реализация. Хотя бы потому, что большую часть работы связанную с растеризацией возьмет на себя видеокарта, а у тебя этим будет нагружен процессор. Очень давно, когда я еще держал сайт на chat.ru я писал статьи о DirectDraw: http://gamedev.chat.ru/articles/a0004.html http://gamedev.chat.ru/articles/a0007.html Там же кстати моя статья и об инициализации OpenGL http://gamedev.chat.ru/articles/a0003.html Год 1998-2000 где-то (Отредактировано автором: 07 Марта, 2010 - 06:21:49) |
55. LifeKILLED - 07 Марта, 2010 - 06:26:11 | |||
Цитата:
Люблю я их, вот и ругаю Цитата:
Я юморист типо Пишут, что DirectX 11 это как требования к производителям видеокарт, это не я придумал. ДА! Фигня может, но не я ж аффтар А, мож и согласовано все с ними было, и не в Майкрософте решали что да как делать. Однако решили, готов поспорить, на каком-нибудь собрании не без их участия. К OpenGL да, выходят расширения, но они походу используются, чтобы стряпать демки и ролики самими производителями Потому как все игры сейчас поголовно создаются на DirectX. Ну и 3 версию ГЛ не очень любят походу, складывается такое впечатление у меня почему-то после чтения постов на форумах. Может, и ошибочное. Возможное применение DirectX 3: DirectMedia - вводный ролик помоему был avi, если я не ошибаюсь DirectSound - а почему бы и нет? Но рендер конечно же OpenGL, не станут же они лазить в коды Кармака А дистрибутив сам видел!!! Разрази меня гром Я прикоснулся к истории Может быть обновление. Хотя в те времена была в ходу Windows95, сам на ней сидел, и не факт что в самых первых ее версиях была DirectX 3. IE то там тоже с обновлением вышел. (Добавление) Цитата:
Круто!!! Почитаю! (Добавление) ... Но позже. Сначала посплю. Здаю тебе смену |
56. jm - 07 Марта, 2010 - 06:49:57 | ||
Обосную. Цитирую тебя: Цитата:
То есть на OpenGL забили ? Я правильно тебя понял ? И забил ms ? Давай разберемся в сути проблемы. Для начала подумаем, могут ли быть какие либо аппаратные проблемы. Ну чисто теоретически-обывательски А ля мог ли ms 'заставить' разработчиков видеокарт производить видеокарты чиста-для-Direct3d Ты правда думаешь, что конвейер OpenGL сильно отличается от конвейера DirectX ? Ты правда думаешь, что математика, используемая в этих разных 3d API отличается ? Нет. Не отличается. К чему мы приходим в итоге ? Аппаратных препонов нет. Что у нас с программной частью ? Ага - есть механизм icd, generic OpenGL не вырезан из дистрибьютива. Программных проблем тоже нет. Социальные. Над тобой что, стоят два здоровых негра с ножом у горла и требуют от тебя использовать только Direct3D ? Не думаю. Как и кто использует расширения opengl это проблема далеко не Ms Они молодцы, продвинули СВОЙ продукт. Что в этом такого ? Цитата:
Нет, юноша, у вас явно токсикоз По поводу возможного применения DirectX конечно. Просто не стал все это перечислять, а упомянул только то, в чем уверен. id на сколько я помню DirectShow не использовала никогда. Хотя утверждать опять таки не буду. (Добавление) Кстати, из моей статьи об инициализации OpenGL понятно, почему я игнорировал флаг PFD_GENERIC_ACCELERATED Его наличие определяет только тип аппаратного ускорения - MCD обрезок или полноценный ICD драйвер. Меня это не интересовало (Отредактировано автором: 07 Марта, 2010 - 06:53:28) |
57. LifeKILLED - 07 Марта, 2010 - 16:29:41 |
Все, с этого момента перестаю нести бред и начинаю умничать Еще раз расписал на бумажке функцию отрисовки спрайта. Хочу все-таки поделиться мыслями. В цикле отрисовки не будет никаких float-чисел, никакого преобразования или умножения. Только инкременты указателей, одно сложение и несколько if с побитовыми операторами. Не знаю пока, хватит ли мне byte-переменных на то, чтобы плностью регулировать размер картинок, или все-таки прибегнуть к использованию unsigned short int. Это надо проверять. В остальном такие вот дела. По моим подсчетам наибольший размер отрисовки спрайта на экране (при переменных byte) будет размером в ~4000 пикселей в ширину, а наименьший - в 8 раз меньше первоначального размера спрайта (т.е. спрайта 256х256 можно будет уменьшить до 32х32 пикселей, меньше и не надо, все равно видно не будет ))))) ). Такие будут возможности. Если функция будет работать достаточно быстро, реализую еще и блендинг. Таковы мои планы Еще подумаю до вечера, почеркаю в тетрадке, пока брат будет рубиться в Plants'n'Zombies, и приступлю к написанию. |
58. jm - 07 Марта, 2010 - 16:49:11 |
float чисел в наше время вряд ли стоит бояться. Тем более 2д аркаде вроде твоей |
59. LifeKILLED - 07 Марта, 2010 - 16:58:19 |
Все равно хочу сделать по максимуму. Вдруг Пентиум 200 потянет )))))) byte-переменные будут расчитываться из float-параметров перед циклом "рисования". Это будут таймеры, сколько пикселов отрисовать. А уже в самом цикле при присвоении каждой точки ("выборке" (C) ) будут использоваться эти byte-переменные. Сначала строка будет рисоваться кусками по 16 пикселов без проверок. А в последних кусках ряда будет столько пикселов, сколько осталось. Эти оставшиеся 15 или меньше пикселов будут дорисовываться простым циклом (с проверкой окончания строки после каждого пиксела). Я только что описал отрисовку одного ряда по горизонтали. В начале каждого ряда указатель будет обновляться. Вначале-то я сделаю преобразование из float в UINT, как же иначе. Может быть, если ряд по вертикали будет точно таким же (типо растяжение изображения по алгоритму ближайший-соседний ), буду копировать более верхний ряд memcpy . Еще одно byte число - дробное соотношение пиксела спрайта к пикселу изображения. Это моя замена дробного числа. Точность такой дроби получется 1/16. (целое можно получить сдвигом на 4 бита вправо). Этот таймер как раз и будет отсчитывать, через какой промежуток инкрементировать указатель на текстуру. (Если byte число равно 16, значит масштаб 1/1, если 12, то 1/1.5 и так далее). Если прокатит со скоростью работы, выложу код. И конечно же, наводню игру спрайтами )))))))) (Добавление) А вообще-то, если short UINT переменные будут работать так же быстро, как byte-переменные, я сделаю их. Тогда точность будет уже до ~1000 и тогда по красивше будет, и растянуть картинку можно будет на 1000 раз больше ))))))) Это я выясню эксперементальным путем. Но вариант с byte меня лично тоже устраивает. (Добавление) Переустановил Visual Studio, пришлось заново искать откуда взять glaux (я им пользуюсь с давним времен, в частности гружу с его помощью BMP ), а эти....... Ладно, ладно, гении из Microsoft, убрали этот файл из дистрибутива VS. Зачем? Специально, что ли, чтобы мне насолить? Как после такого на них не ругаться )))))))) Мне нравится Windows, нравится MsVs, MsOffice, я всегда качаю самые последние версии этих програм )))))))) Но такие вот мелочи злят немножко |
60. jm - 07 Марта, 2010 - 19:01:04 |
Я даже боюсь что-то комментировать. Потому, что потом очень долго придется переписываться Тем более я пока плохо понимаю все твои мега планы По поводу оптимизаций. Делают это обычно так - используют профайлер и оптимизируют только узкие места. А ты не выяснив, где именно у тебя могут быть ботлнеки бросаешься с шашкой кромсать дворовых кошек. Так не пойдет. Или это приведет тебя к потерям фпс. Ради интереса постоянно меряй попугаев, чтобы знать, к чему привели тебя твои изыскания. Конечно, специально убрали. А давно это glaux стала неотъемлемой частью opengl ? Я считаю, что нужно думать не об сверх оптимизации кода, а о смене апи. Причем в сторону чего нибудь специализированного, вроде hge (http://hge.relishgames.com/). И ты сможешь акцентировать все свое внимание не на изучение апи, а на убер оптимизации которые так тебя притягивают Т.к. есть подозрения, что из-за отсутствия практического опыта ты использовал в своем рендере не самый оптимальный подход. Я просто не понимаю, чему там тормозить даже на софтверном рендере. Не утверждаю, а просто предполагаю. (Отредактировано автором: 07 Марта, 2010 - 19:01:38) |
61. LifeKILLED - 07 Марта, 2010 - 20:21:52 | ||
Цитата:
Код пришлю, там немного будет, но интересно. (Добавление) Ты не понял! Тормозит НЕ НА совтверном рендере! Цитата:
Говоря простым языком, идет программная эмуляция OpenGL. Только в этом проблемы. А не в моих кода. Я уже знаю, где могут возникнуть тормоза. В цикле по растеризации, т.к. он будет повторяться в среднем 40000 раз (столько точек при отрисовке спрайта). Огромное спасибо за ссылку! Но ты опоздал. Я сначала сделаю свой софтверный рендер, а потом уж, если не прокатит.... (даю себе неделю). |
62. jm - 07 Марта, 2010 - 20:54:20 | |
software emulation of hardware acceleration это и есть generic реализация. Программная. Я повторюсь. Я не вижу ничего такого в твоем приложении, из-за чего эта самая программная эмуляция может тормозить. Впрочем не буду утверждать. Но я бы все перепроверил. (Добавление) К слову о glaux. Если верить сайту майкрософт она deprecated И еще цитатка gamedev.net: Цитата:
В качестве альтернативы - используй glut. |
63. LifeKILLED - 08 Марта, 2010 - 02:56:34 | ||
Я из glaux использую только функцию загрузки bmp. Если честно, когда-то я грузил их же из MFC, и все работало так же прекрасно Надо переписать функцию загрузки текстуры. А еще лучше взять какую-нибудь библиотеку или грузить самому. Цитата:
Я чего там только ни настраивал. Я все отключил, что только можно! И фильтрацию, и все остальное. У меня даже режим есть специальный - "Очень некрасивый" Мое мнение - generic реализация opengl очень плохо оптимизирована. Потому что визуальный результат точно должен соответствовать аппаратному рендерингу. И ЦП вынужден считать все эти матрицы, шматрицы, фильтровать текстуры и тому подобное. Почему эмуляция может тормозить? А почему НЕ МОЖЕТ? Ведь никто ей все равно не пользуется кроме меня. (я один не посмотрел на флаги ) (Добавление) Код:
(Добавление) Этот код я по черному сдул из документации ) Что еще я должен там писать? |
64. jm - 08 Марта, 2010 - 05:18:41 |
О загрузке изображений - посмотри еще в сторону devil: http://openil.sourceforge.net/ Это инициализация. Я о другом. Что у тебя происходит в рендере. Кроме того я опять таки не утверждаю. Если тебе не нравится генерик имплементация от ms попробуй mesa gl. Я не уверен, но думаю ее софтверная имплементация есть под win. (Отредактировано автором: 08 Марта, 2010 - 06:48:37) |
65. LifeKILLED - 08 Марта, 2010 - 15:50:26 | |
Цитата:
Я вообще-то вычитал еще о куче софтверных ренреров... Но мне надо-то всего лишь масштабирование изображений и больше ничего. Я даже вращение не использую Поэтому свой рендер побыстрому накидаю и фиг с ним. Про DevIL я знаю. Лучше уж использую другие библиотеки Та же GDI+ умеет грузить целую кучу форматов. В рендере? Рисую квардами спрайты и все. Матрицами не пользуюсь, пишу координаты в вершинах руками . Материалов никаких не использую - максимум glColor4f. И то при низкой графике и это отключаю. Блендинг тоже обыкновенный, на низких настройках он отключается и остается один AlphaTest. И все равно тормоза. Я отключил все, что мог, но тормоза есть. В подтверждение моим словам есть десяток тем на разных форумах, где говорится про тормозную эмуляцию OGL/ |
66. jm - 08 Марта, 2010 - 19:51:03 |
Можно увидеть код рисования ? Если это конечно не коммерческая тайна |
67. LifeKILLED - 08 Марта, 2010 - 23:42:16 | |
Код:
(Добавление) Черт, трианглами, оказывается )))) Но не по этому же тормозит? .... (Добавление) Прикольный смайл в названии первой функции (Добавление) Всю функцию ShowAll() не хочу выкладывать, она очень большая. В ней из команд GL только glClear() (правда, зачем она нужна....... но зачем-то я ее написал.......), и все. Ну и перед выводом спрайтов букв менью команда glColor4f(). (Добавление) Везде фигурирует условие bool GraphicQuality . Это та самая настройка графики. Я пытался бороться с этими тормозами, сделав опцию пониженного качества, убирающее все настройки, которые делали OpenGL очень похожим на софтверный рендеринг (если false). Даже разрешение при таком варианте снижал до 800 на 600, при перезагрузке игры. И все равно тормоза! (хотя идет быстрее, но лишь в 2 раза, и FPS уже не 0.3, а 0.7 )))) Прогресс, да? На двухъядернике!!! Ж( ) |
Powered by ExBB 1.9.1 Original Style v1.5a2 created by Daemon.XP |