Войти
ПроектыФорумОцените

В поисках компаньона (2 стр)

Страницы: 1 2 3 Следующая »
#15
14:08, 17 мар. 2004

fse
Лично я подключаюсь.


#16
21:11, 17 мар. 2004

fse
Чем смогу помогу!!!

#17
1:13, 18 мар. 2004

Вот и отлично!!!
Магистр, Дмк, тогда я согласую действия с Lim-ом и распределим обязанности.
Я между делом уже практически дописал поддержку игровых скриптов, так что с точки зрения кодинга остаётся только написать редактор карт, несколько игровых скриптов, главного игрока и соперников. Потом получить от вас спрайты, затолкать их в игру и вот уже будет готова демонстрационная версия!!!

#18
19:01, 18 мар. 2004

fse
Кто руководитель проекта? Чтобы рисовать, нужно конкретно знать, что рисовать. Допустим там будут локации. Если дезайнеров (нас) несколько, то все это надо будет распределить. Нужно вообще, чтобы все как-то в одинаковом стиле рисовали!

#19
15:04, 19 мар. 2004

Конечно да. Если не получится, что наверняка, то надо так. Один рисует травку, ландшавты, море. Второй может деревья рисовать, но лучше их первый. А третий пусть персонажей и объекты.

#20
17:42, 19 мар. 2004

Привет!!!
А почему ты думаешь, что не получится???

#21
1:15, 20 мар. 2004

Давайте лучше каждый рисует всё подряд и не зная в каком стиле рисует другой. Получится очень весёлая игра :)

#22
12:22, 26 мар. 2004

Всем привет, кто в команде! Хорошая новость: дописал редактор карт. Сейчас рисую первую карту. Скоро её в игру грузить уже буду.

#23
1:47, 30 мар. 2004

Всем хай!!!
Люди, как там дела с художеством продвигаются???
У меня уже готов первый демо-уровень!!! Загружен персонаж и одна вражина: та птица, нарисованная Lim-мом.
Уровень пока не очень большой (экранов так 15 в длинну на разрешении 1024).
D.m.k, гляжу ты в программирование разбираешься? Слушай, тут понадобилось несколько кусочков кода оптимизировать - переписать на asm. Ты в дельфийском asm-е разбираешься??? Смог бы? Я просто в асме не особо хорошо секу. Вот пример куска кода:

  for I:=0 to Size-1 do
  begin
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4]:=ImageData^[I*4];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+1]:=ImageData^[I*4+1];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+2]:=ImageData^[I*4+2];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+3]:=ImageData^[I*4+3];
  end;

#24
13:37, 30 мар. 2004

здесь и без ассемблера понятно, что не нужно четыре раза вычислять
[((I div FWidth)*FGLWidth + (I mod FWidth))*4
;)

#25
17:57, 30 мар. 2004

Gr, понятно это. Это просто я не совсем удачный пример написал. Да и ктомуже изначально, когда писал, знал, что надо бы этот момент писать на асме, поэтому об оптимизации дельфи-кода не задумывался - написал так, чтобы было.
Вот вообще-то то, что мне надо "проасмить". Цитирую.

procedure TSprite.BuildFromBGRData(ImageWidth, ImageHeight: Integer; Image: Pointer = nil;
  Mask: Pointer);
var
  ImageData, AlphaData: PPixelArray;
  Size: Integer;
  I: Integer;
begin
  ImageData:=Image;
  AlphaData:=Mask;

  FHasAlpha:=(AlphaData<>nil);

  FWidth:=ImageWidth;
  FHeight:=ImageHeight;

  FGLWidth:=Trunc(Power(2, Ceil(Log2(FWidth))));
  FGLHeight:=Trunc(Power(2, Ceil(Log2(FHeight))));

  Size:=ImageWidth*ImageHeight;

  if FHasAlpha then
    SetLength(FImage, FGLWidth*FGLHeight*4)else
    SetLength(FImage, FGLWidth*FGLHeight*3);

  FillChar(Pointer(FImage)^, Length(FImage), 0);

  for I:=0 to Size-1 do
  if FHasAlpha then
  begin
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4]:=ImageData^[I*3+2];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+1]:=ImageData^[I*3+1];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+2]:=ImageData^[I*3];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+3]:=AlphaData^;
  end else
  begin
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3]:=ImageData^[I*3+2];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3+1]:=ImageData^[I*3+1];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3+2]:=ImageData^[I*3];
  end;

  if TextureID<>LastTexture then
  begin
    glBindTexture(GL_TEXTURE_2D, TextureID);
    LastTexture:=TextureID;
  end;
  if FHasAlpha then
    glTexImage2D(GL_TEXTURE_2D, 0, 4, FGLWidth, FGLHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, Pointer(FImage))else
    glTexImage2D(GL_TEXTURE_2D, 0, 3, FGLWidth, FGLHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, Pointer(FImage));
end;

Вот интерусующий меня кусок кода.
  for I:=0 to Size-1 do
  if FHasAlpha then
  begin
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4]:=ImageData^[I*3+2];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+1]:=ImageData^[I*3+1];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+2]:=ImageData^[I*3];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*4+3]:=AlphaData^;
  end else
  begin
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3]:=ImageData^[I*3+2];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3+1]:=ImageData^[I*3+1];
    FImage[((I div FWidth)*FGLWidth + (I mod FWidth))*3+2]:=ImageData^[I*3];
  end;

Это главный цикл процедуры составления картинки RGB или RGBA из ImageData (массив BGR цветов) и, если есть Alpha, из Mask (массив A-компонента). Так вот этот кусок мне нужно переделать на асм.

Вот.

#26
18:53, 30 мар. 2004

fse
На АСМ - легко! Только вот я чота не понял: нафик width и height (а именно всякие mod и div с ними), когда у тебя есть size и данные (ака триплеты пикселов) идут подряд? Я так понял, ты пытаешься запихнуть в картинку из исходного массива то-же, только перевернуть BGR в RGB, так? Или у тебя там еще масштабирование идет к размеру pow2? Вобщем, чтобы я тебе код "сгенерил" :) мне надо:
* Исходные данные и их формат (как я понял, это ImageData и AlphaData), вопрос: там выравнивания на границу по строкам нет (как в BMP)?.
* Выходные данные (это, как я понал, FImage, только уже RGB или RGBA).

Вобщем, скинь на мыло подробнее... я тебе на следующий день готовый код отошлю (с графикой пока у меня простой, времени мало, работа много..... вобщем, как там у вас ДЕМО стадия закончится, ты пиши, а я тут планчик придумал, как работу дизигнеров согласовать, чтобы все чЁтко было!)

З.Ы.
АСМ, он и в Африке асм :)

#27
20:52, 30 мар. 2004

Всем хай!
Вот скрин зачатка первого демо-уровня. Снят на 800/600.
Чел сматывается от стаи тупых, но голодных птиц:)

Изображение удалено
#28
20:53, 30 мар. 2004

Dmk, ок, я тебе по почте расскажу всё.

#29
22:16, 2 апр. 2004

Привет, люди, гуд ньюз: переписал прогу под WinApi!

Страницы: 1 2 3 Следующая »
ПроектыФорумОцените

Тема в архиве.