Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 10:57   #1191
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Цитата:
"реку готового" на C++.
Ну не надо уж так.
А в целом абсолютно согласен. Многие хорошие проекты делались на чем попало, а точнее на чем ближе программисту писавшему проект и не только. Мне вот например C# нравиться, да возможно на нем не написать красивый 3д мир с кучей шейдеров и высоко полигонной графики, который будет работать даже на слабых пк… да и делать одному это много лет… а так чтобы сделать прототип, превратить свою идею в жизнь, показать другим – более чем.
dampirik вне форума Ответить с цитированием
Старый 22.11.2012, 18:23   #1192
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
Цитата:
Сообщение от Beermonza
... "реку готового" на C++.
Ну не надо уж так.
А я ничего удивительного или обидного не сказал, ...по сети блуждают слепые стереотипы, именно по случаю наличия много больше готового материала на С++.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 01.12.2012, 19:20   #1193
leoparrd
Заблокирован
 
Регистрация: 27.08.2010
Сообщений: 37
По умолчанию

Собственно о чём спор?
Я тут почитал и понял. что далеко не все знают как вообще пишутся игры, особенно использующие аппаратные возможности, И уж почти никто не знает что такое Delphi и поэтому путают среду программирования и язык.
Вопрос не в том, писать ли игры на Delphi. Вопрос о языке программирования Паскаль.
Можно ли а Паскале писать игры? А почему нет? Я сам пишу и ничего. Работают великолепно. Просто нужно знать что делать и как.
В чём проблема этого большого трёпа, который здесь развели?
Опять скажу - в незнании.
Почему принято считать, что писать можно только на C++?
Да очень просто. Заголовочные файлы для него написаны. Так называемый SDK.
Это лишь посредники для подключения огромной виртуальной машины. Ей даются команды, и она выполняет их. А на каком языке эти команды давать, никакой разницы. Главное. чтобы был переводчик команд для этого языка. То есть те самые заголовочные файлы. Есть они и для Паскаль. А раз есть - дело за малым. Обращаться к виртуальной машине из своей программы через заголовочные файлы.
И что для игры ещё нужно? Уйма ресурсов. Так они делаются в графических пакетах и вспомогательных программах. Тут уж вообще вопрос о языке программирования не стоит. А когда они готовы, какая разница, посредством какого языка они будут переданы виртуальной машине?
О мультиплатформенности речи вообще нет, если речь идёт Direct X.
Если нужны другие операционные системы то тогда Open GL.
Это другая виртуальная машина. И у неё свои заголовочные файлы. И опять же. Есть он для Паскаль. И какая разница с какого языка посылать команды?
Нужно под Мак? Пожалуйста. Последняя среда разработки использующая Паскаль поддерживает мультиплатформенность. FreePascal давно её поддерживает.
Для игр Нужна всего лишь одна форма и таймер.
В чём вообще проблема? надо просто сесть и писать. Писать и не забивать голову на чём. Что ближе к сердцу на том и писать.
leoparrd вне форума Ответить с цитированием
Старый 01.12.2012, 23:08   #1194
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от leoparrd Посмотреть сообщение
Собственно о чём спор?
Если вы всё прочли от первой страницы до последней, то это уже подвиг. Споров тут нет, это конструктивный диалог с появляющимися в теме, которые не обладая достоверной информацией пытаются отправить Delphi в область ПО и только. Т.е. стандарт: "Отношусь плохо, потому, что я его не знаю".

А тема больше не как вопрос, а как толчок к действию.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 29.12.2012, 22:59   #1195
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
Сообщение

Здравствуйте.
Помогите, пожалуйста, оптимизировать алгоритм вывода спрайтов.

Раньше я пользовался циклом и Canvas.Draw – уровень загрузки ЦП 40%.
Потом заменил Draw на BitBlt – результат 38-39% с потерей альфа-канала.
Сейчас я использую цикл, который попиксельно перегоняет текстуры в TRGBTriple буфер;
далее с помощью SetDIBits и BitBlt формирую и вывожу финальный кадр.
Такой подход загружает процессор на 2~20%. Причем, разброс всегда случайный.

На данный момент меня интересует способ, которым можно понизить нагрузку на процессор и увеличить скорость отрисовки.
В середине темы было обсуждение про MMX и ассемблерные вставки. Я пытался восстановить код из сообщений, но тщетно.
Надеюсь на помощь более опытных пользователей.
Alexan-Dwer вне форума Ответить с цитированием
Старый 30.12.2012, 12:08   #1196
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

А по буфферизации у Вас как ? Если кадр не абсолютно каждый такт меняется (а такое только в 0,01% случаев имеет смысл) то буфферизация - первый шаг.
Лично я делаю примерно так:
цикл в котором каждый объект, требующий отрисовки ввиду того что он изменился (это по обычному флагу в классе таких объектов делается), сперва блитит на итоговый кадр "подложку" - берет из специального буфера ("бэка") кусочек размером с себя, а потом блитит свою графику, каждый класс объекта эту графику преобсчитывает обычно в себе - в своих буферах. Итог - даже средний комп (по процу, ибо видюха не при делах, ибо чисто GDI) имеет 0-1% процент загрузки на 1280*1024 кадре при наличии анимированных и просто меняющихся изображений собирающихся в единый кадр из десятков элементов. Правда по полупрозрачности не работал ещё.. но все заделы на то есть, GDI+ в плане стоит, когда-то доприкручу, могу скинуть семплы глянуть убедиться.
phomm вне форума Ответить с цитированием
Старый 30.12.2012, 14:52   #1197
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Буферизацию я убрал, так как она увеличивает объем виртуальной памяти, и самое главное малоэффективна при постоянном изменении мира. Конечно, когда персонаж не перемещается и мир полностью статичен, уровень загрузки ЦП 1%, но это бывает крайне редко.
Сейчас меня еще сильно огорчает то, что функция SetDIBits переворачивает массив и нужно постоянно переопределять Y-координату текстуры. Поэтому я ищу альтернативный способ.
Alexan-Dwer вне форума Ответить с цитированием
Старый 30.12.2012, 16:06   #1198
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Alexan-Dwer почитай тут ...как освоишь, создай сообщение там, та тема вбирает твой вопрос.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 31.12.2012, 16:34   #1199
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Beermonza, спасибо. Буду изучать.

Помогите, пожалуйста, проверить два исходных кода, которые работают не правильно.

Первый почему-то инвертирует картинку из буфера:
Код:
procedure Ex1;
var
tWhite, tBlue, tRed: TRGBTriple;
Buf: array [0..119, 0..119] of TRGBTriple;
i, j: Byte; bmp: TBitmap; BInfo: tagBITMAPINFO;
begin
// Обнуление массива.
FillChar(Buf, 120*120*3, 0);
// Палитра.
tWhite.rgbtBlue:=255; tWhite.rgbtGreen:=255; tWhite.rgbtRed:=255;
tBlue.rgbtBlue:=255; tBlue.rgbtGreen:=0; tBlue.rgbtRed:=0;
tRed.rgbtBlue:=0; tRed.rgbtGreen:=0; tRed.rgbtRed:=255;
// Заполнение.
for i:=0 to 119 do
for j:=0 to 119 do
begin
// Выбор цвета.
if i in [0..39] then Buf[i, j]:=tWhite;
if i in [40..79] then Buf[i, j]:=tBlue;
if i in [80..119] then Buf[i, j]:=tRed;
end;
// Картинка.
bmp:=TBitmap.Create;
bmp.Width:=120; bmp.Height:=120;
// Информация об изображении.
BInfo.bmiHeader.biSize:=SizeOf(TBITMAPINFOHEADER);
BInfo.bmiHeader.biWidth:=120;
BInfo.bmiHeader.biHeight:=120;
BInfo.bmiHeader.biPlanes:=1;
BInfo.bmiHeader.biBitCount:=24;
BInfo.bmiHeader.biCompression:=BI_RGB;
// Формирование кадра.
SetDIBits(bmp.Canvas.Handle, bmp.Handle, 0, 120, @Buf, BInfo, DIB_RGB_COLORS);
// Вывод результата.
BitBlt(Form1.Canvas.Handle, 0, 0, 120, 120, bmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
Второй не воспринимает динамический массив:
Код:
procedure Ex2;
var
Buf: array of array of TRGBTriple;
bmp: TBitmap; BInfo: tagBITMAPINFO;
begin
// Размер буфера.
SetLength(Buf, 100, 100);
// Обнуление массива.
FillChar(Buf, 100*100*3, 0);
// Картинка.
bmp:=TBitmap.Create;
bmp.Width:=100; bmp.Height:=100;
// Информация об изображении.
BInfo.bmiHeader.biSize:=SizeOf(TBITMAPINFOHEADER);
BInfo.bmiHeader.biWidth:=100;
BInfo.bmiHeader.biHeight:=100;
BInfo.bmiHeader.biPlanes:=1;
BInfo.bmiHeader.biBitCount:=24;
BInfo.bmiHeader.biCompression:=BI_RGB;
// Передача массива
SetDIBits(bmp.Canvas.Handle, bmp.Handle, 0, 100, @Buf, BInfo, DIB_RGB_COLORS);
// Вывод результата.
BitBlt(Form1.Canvas.Handle, 0, 0, 100, 100, bmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
Всех с наступающим Новым годом
Alexan-Dwer вне форума Ответить с цитированием
Старый 31.12.2012, 21:15   #1200
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Alexan-Dwer, переворачивает верх ногами?

Задай высоту отрицательным числом, изображение перевернется обратно:

Код:
BInfo.bmiHeader.biHeight := -120;

С наступающим Новым Годом!
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=DeS=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 750 14.11.2017 20:26
Музыка программистов - как вы относитесь к АРИИ? Весёлый Жека Свободное общение 46 10.10.2008 22:32
Конкурсы по созданию игр на Delphi mutabor Свободное общение 0 15.06.2007 12:40
Работа по созданию ПО remix Фриланс 3 22.04.2007 11:00