{{notification.text}}

MirGames

17.02.10 16:17
0
DRON
а как с такой картинки анимацию сделать?
в двиге это через матрицу делается или процедура какая есть7
Отредактировано: 17.02.10 16:33
#81
20.03.10 06:12
0
DRON
Цитата
В версии которую выложу в понедельник сделаю такую неучтенную мноу возможность.

А баги поправишь + хедеры для Delphi?
#82
Программир Всия Руси!
20.03.10 13:08
0
SkAT
Ну конечно. Вот что еще нового сделаю хз, это больше багфикс будет и добавление самого необходимого, о чем позабыл :)
#83
22.03.10 13:40
0
DRON
Ладно, пока с шейдерами в Delphi все плохо, вот перевод примера Batching2D :)
Код

program Batching2D;

uses
  Windows, Math,
  DGLE2 in '..\..\..\..\Include\Delphi\DGLE2.pas',
  DGLE2_types in '..\..\..\..\Include\Delphi\DGLE2_types.pas';

const
  APP_CAPT = 'Batching2D';
  DLL_PATH = '..\..\..\Bin\DGLE2.dll';
  RES_PATH = '..\..\..\Shared resources\';

  STARS_COUNT     = 799;
  SOLEILS_COUNT   = 24;
  ASTEROIDS_COUNT = 49;

type
  TMyGameObject = record
    Pos   : TPoint2;
    Color : TColor4;
    Angle : Single;
  end;

var
  pEngineCore : IEngineCore      = nil;
  pResMan     : IResourceManager = nil;
  pRender     : IRender          = nil;
  pRender2D   : IRender2D        = nil;
  pInput      : IInput           = nil;
  pFnt        : IBitmapFont      = nil;
  pAsteroid   : ITexture         = nil;

  Counter : Integer = 0;
  DoBatch : Integer = 0;

  StarPolygon : array[0..9] of TVertex2;

  Stars     : array[0..STARS_COUNT]     of TMyGameObject;
  Soleils   : array[0..SOLEILS_COUNT]   of TMyGameObject;
  Asteroids : array[0..ASTEROIDS_COUNT] of TMyGameObject;

procedure Init( pParametr : Pointer ); stdcall;
var
  i : Integer;
begin
  StarPolygon[0] := Vertex2( 47, 20, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[1] := Vertex2( 60, 48, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[2] := Vertex2( 91, 48, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[3] := Vertex2( 67, 64, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[4] := Vertex2( 80, 94, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[5] := Vertex2( 48, 75, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[6] := Vertex2( 21, 92, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[7] := Vertex2( 30, 65, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[8] := Vertex2(  1, 49, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );
  StarPolygon[9] := Vertex2( 37, 48, 1.0, 1.0, 0.7, 0.7, 0.0 ,1.0 );

  pEngineCore.GetSubsystem( ESS_RESOURCE_MANAGER, IEngineSubSystem( pResMan ) );
  pEngineCore.GetSubsystem( ESS_INPUT, IEngineSubSystem( pInput ) );
  pEngineCore.GetSubsystem( ESS_RENDER, IEngineSubSystem( pRender ) );

  pRender.GetRender2D( pRender2D );
    pInput.Configure( ICF_HIDE_CURSOR );
  pRender.SetClearColor( Color4( 0, 0, 0, 1 ) );

  //It's 2D game adapted only for 800X600 resolution, if even resolution will be higher it won't effect game
    pRender2D.SetResolutionCorrection( 800, 600 );

  pResMan.Load( RES_PATH + 'sprites\asteroid.tga', IEngBaseObj( pAsteroid ), TEXTURE_LOAD_DEFAULT_2D );
  pAsteroid.SetFrameSize( 64, 64 );

  //The way we can get default system font
    pResMan.GetDefaultResource( EOT_BITMAP_FONT, IEngBaseObj( pFnt ) );

    //Now init sample data
    for i := 0 to 9 do
    begin
        StarPolygon[i].X := StarPolygon[i].X + 400.0;
        StarPolygon[i].Y := StarPolygon[i].Y + 200.0;
    end;

    for i := 0 to STARS_COUNT do
    begin
        Stars[i].Pos := Point2( Random( 800 ), Random( 600 ) );
        Stars[i].Angle := 1 + Random( 9 );
  end;

    for i := 0 to SOLEILS_COUNT do
    begin
        Soleils[i].Pos   := Point2( Random( 800 ), Random( 600 ) );
        Soleils[i].Color := Color4( Random( $007FFF ), 255 );
        Soleils[i].Angle := Random( 360 );
  end;

    for i := 0 to ASTEROIDS_COUNT do
    begin
        Asteroids[i].Pos   := Point2( Random( 800 ), Random( 600 ) );
        Asteroids[i].Angle := Random( 360 );
  end;

    //The way you can call console commands from your application
    pEngineCore.ConsoleExec( 'core_profiler 1' );
    pEngineCore.ConsoleExec( 'r2d_profiler 2' );
end;

procedure Free( pParametr : Pointer ); stdcall;
begin
  pAsteroid   := nil;
  pFnt        := nil;
  pInput      := nil;
  pRender2D   := nil;
  pRender     := nil;
  pResMan     := nil;
  pEngineCore := nil;
end;

procedure Process( pParametr : Pointer ); stdcall;
var
  i : Integer;
  Prsd : Boolean;
begin

    pInput.GetKey( KEY_F1, Prsd );
    if Prsd then
  begin
    DoBatch := 1;
    pRender2D.BatchRender( BM_ENABLED_UEP );
    end;

    pInput.GetKey( KEY_F2, Prsd );
    if Prsd then
  begin
        DoBatch := 2;
    pRender2D.BatchRender( BM_ENABLED_UER );
  end;

    pInput.GetKey( KEY_F3, Prsd );
    if Prsd then
  begin
        DoBatch := 0;
    pRender2D.BatchRender( BM_DISABLED );
  end;

  for i := 0 to 9 do
    begin
        StarPolygon[i].X := StarPolygon[i].X + Cos( Counter / 100.0 );
        StarPolygon[i].Y := StarPolygon[i].Y + Sin( Counter / 100.0 );
    end;

  for i := 0 to SOLEILS_COUNT do
  begin
        Soleils[i].Pos.X := Soleils[i].Pos.X + Cos( Soleils[i].Angle * 3.14 / 100 );
        Soleils[i].Pos.Y := Soleils[i].Pos.Y + Sin( Soleils[i].Angle * 3.14 / 100 );
        Soleils[i].Angle := Soleils[i].Angle + 6.0;
  end;

  for i := 0 to ASTEROIDS_COUNT do
  begin
        Asteroids[i].Pos.X := Asteroids[i].Pos.X + Cos( Asteroids[i].Angle * 3.14 / 50 );
        Asteroids[i].Pos.Y := Asteroids[i].Pos.Y + Sin( Asteroids[i].Angle * 3.14 / 50 );
        Asteroids[i].Angle := Asteroids[i].Angle + 4.0;
  end;

  Inc( Counter );
end;

procedure Render( pParametr : Pointer ); stdcall;
var
    i, j   : Integer;
  tw, th : Cardinal;
    BTxt   : AnsiString;
begin
  pRender2D.Begin2D();
    for i := 0 to STARS_COUNT do
      pRender2D.DrawPoint( Stars[i].Pos, Stars[i].Color, 4 );

    for i := 0 to ASTEROIDS_COUNT do
      pRender2D.DrawSpriteA( pAsteroid, Asteroids[i].Pos, Point2( 64, 64 ), Counter mod 64, Asteroids[i].Angle );

    for i := 0 to SOLEILS_COUNT do
      for j := 0 to 89 do
              pRender2D.DrawLine( Soleils[i].Pos, Point2(
                Soleils[i].Pos.X + Cos( ( Counter / Soleils[i].Angle + j * 4 ) * 3.14 / 180 ) * 40,
                Soleils[i].Pos.Y + Sin( ( Counter / Soleils[i].Angle + j * 4 ) * 3.14 / 180 ) * 40 ),
                Soleils[i].Color, PF_SMOOTH );

    pRender2D.DrawPolygon( nil, @StarPolygon[0], 10, PF_FILL );

    //Text
    case DoBatch of
          0 : BTxt := 'Disabled';
      1 : BTxt := 'Enabled(Rebuild on every update tick.)';
      2 : BTxt := 'Enabled(Rebuild on every frame.)';
    end;

    BTxt := 'Batch Render: ' + BTxt;

    pFnt.GetDimensions( PAnsiChar( BTxt ), tw, th );

    case DoBatch of
      0 : pFnt.Draw2D( ( 800 - tw ) div 2, 600 - th, PAnsiChar( BTxt ), Color4( 255, 0, 0, 255 ) );
        else
      pFnt.Draw2D( ( 800 - tw ) div 2, 600 - th, PAnsiChar( BTxt ), Color4( 0, 255, 0, 255 ) );
    end;

    BTxt := 'Press "F1", "F2" or "F3" to change modes.';
    pFnt.GetDimensions( PAnsiChar( BTxt ), tw, th );
    pFnt.Draw2D( ( 800 - tw ) div 2, 600 - th * 2, PAnsiChar( BTxt ), Color4() );
  pRender2D.End2D();
end;

begin
  if( GetEngine( DLL_PATH, pEngineCore ) ) then
  begin
    if( SUCCEEDED( pEngineCore.InitializeEngine( 0, APP_CAPT, EngWindow(), 50 ) ) ) then
    begin
      pEngineCore.ConsoleVisible( FALSE );

      pEngineCore.AddProcedure( EPT_INIT,    @Init );
      pEngineCore.AddProcedure( EPT_PROCESS, @Process );
      pEngineCore.AddProcedure( EPT_RENDER,  @Render );
      pEngineCore.AddProcedure( EPT_FREE,    @Free );
      pEngineCore.StartEngine();
    end;
    FreeEngine();
  end
  else
    MessageBox( 0, 'Couldnt load '+DLL_PATH+'!', APP_CAPT, MB_OK or MB_ICONERROR or MB_SETFOREGROUND );
end.


Add: На днях поставил Delphi 2010, пришлось код подправить. Вроде и в D7 и в D2010 все пашет! :)
Отредактировано: 26.03.10 13:29
#84
04.04.10 17:44
0
DRON
А можно как то управлять скоростью анимации? а то сделал анимацию в 5 кадров а она мелькает даже не замечаю
#85
Программир Всия Руси!
04.04.10 21:02
0
DYUMON
Ну да :)
float kadr;
В процессе
kadr += 0.4;
Потом рисуешь и округляешь кадр до целых... вот тебе и управление скоростью :)
#86
Jackrost
12.04.10 03:34
0
У меня есть вопрос,но боюсь что он может показаться слишком глупым:

А есть ли к этому движку русская справка или инструкция? Я конечно хорошо разбираюсь с английским,но просто хотел узнать.
#87
Программир Всия Руси!
12.04.10 04:03
0
Jackrost
Пока нет. Даже английская мало что сейчас из себя представляет. Все вопросы можешь спрашивать здесь или у меня в аське.
#88
KaktuZzz
15.04.10 00:23
0
А какие расширения моделей и текстур поддерживаются?
И кто-нибудь уже делал на DGLE2 какую нить 3D игрушку? =)
#89
Программир Всия Руси!
15.04.10 01:23
0
KaktuZzz
Для 3D текущая версия DGLE2 не применима в виду не дописанности и бажности 3D. Жди апрельского релиза.
Можно совмещать 2D и 3D.
Смело короче юзай все что есть в IRender2D.

Консольная команда
rman_list_reged_fformats
#90
KaktuZzz
15.04.10 01:32
0
2D+3D? ОК)) Там даже где-то пример был =)
Релиз буду ждать)
#91
Geniok
15.04.10 19:49
0
Интересно, как пользоваться экспортером из Макса?
И для какой он версии?
#92
Программир Всия Руси!
15.04.10 20:45
0
Geniok
Для любой.
Что именно с ним не получается?
#93
Geniok
15.04.10 22:27
0
Не могу понять как его использовать!
Если кидаю в папку Скрипт Макса, никакого эффекта. Запускаю скрипт напрямую из Макса, результат тот же.
Раньше использовал плагины, с ними было понятнее, ИМХО.
#94
KaktuZzz
16.04.10 02:17
0
а когда примерно релиз ожидается?
#95
16.04.10 03:13
0
KaktuZzz
Лето... ах лето... лето красное будь со мной :)
Sorry...
#96
Программир Всия Руси!
16.04.10 12:41
0
Цитата(KaktuZzz @ Сегодня, 00:17)
[snapback]103085[/snapback]
а когда примерно релиз ожидается?

С большей вероятностью после майских праздников т.к. на них буду доделывать наверное как раз.
Цитата(MustDie @ Сегодня, 01:13)
[snapback]103089[/snapback]
Лето... ах лето...

Вообще и не говори скоро летняя спячка начнется :)

Geniok
Скачай DGLE1 SDK там есть инструкция она и к DGLE2 вполне подойдет.
#97
17.04.10 14:20
0
Код
[FATAL] Resource Manager can't load file "..\Object\grass.jpg" because of unknown file extension "JPG". (File:".\resman\ResourceManager.cpp", Line:1532)
Splash window destroyed.


Код
[FATAL] Resource Manager can't load file "..\Object\meshs\trees\tree1.png" because of unknown file extension "PNG". (File:".\resman\ResourceManager.cpp", Line:1532)
Splash window destroyed.


Это я пытался запустить пример 3D in 2D написанный под дэлфи...WTF?
DMD однако грузиться...
Отредактировано: 17.04.10 14:24
#98
Vbif_Ironthorn
17.04.10 14:49
0
2 Bengamin
В соседней теме такой же вопрос был, не подключен плагин DGLE2_EXT.dplug
#99
Chupokabra
17.04.10 18:22
0
Для С# есть уже хедеры? Очень нужно двигло под С# нормальное. На WinForm им рисовать.
#100
Программир Всия Руси!
17.04.10 22:09
0
Chupokabra
Есть, но тока на SVN'е. Жди апрельского релиза.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}