• ПисательПлоскихИгр (03.09.07 16:31) [0]
    Привет Мастерам!
    Можно ли при создании трёхмерной игры написать отображение трёхмерных объектов на плоскость экрана с н0ля?
    Без Direct...; без GLScene; без OpenGL; без ...?
    И, если можно, то как долго надо писать и как медленно написаное будет работать?
    Спасибо за внимание.
  • @!!ex © (03.09.07 16:42) [1]
    В свое время в качестве курсовой написал это на Borland Pascal 7.1, поддержка только простейших операций, за один вечер.
    + текстринг еще пол дня писать.
    Плюс освещение день.
    Блендинг, Z-Buffer еще пару дней.
    Я думаю за неделю можно написать сносный софтверный рендер.

    Насчет скорости... А как на первом пне работал анрыл? С клевой графой на то время.. Резво работал, скажу я вам! А ведь чистая софтвера.

    вопрос только зачем в век 3Д ускорителей писать софтверный рендер?
  • ПисательПлоскихИгр (03.09.07 17:08) [2]

    > зачем в век 3Д ускорителей писать софтверный рендер

    Это надобно для ПРОФЕССИОНАЛЬНОГО ОЩЩУЩЕНИЯ.


    > за один вечер

    Какой же СТРРАШНЫЙ уровень профессионализма надо иметь для такой скарости?
  • @!!ex © (03.09.07 18:10) [3]
    > Это надобно для ПРОФЕССИОНАЛЬНОГО ОЩЩУЩЕНИЯ.

    :))


    > Какой же СТРРАШНЫЙ уровень профессионализма надо иметь для
    > такой скарости?

    Там всего 324 строки. Я напомню, там только простейшие операции. вот так выглядит классик это реализующий:
    TSoftware3DRender = object
     public
      Constructor Create(focalLength:integer);
      Destructor  Destroy;

      Procedure   SetFocalLength(size:integer);
      Procedure   SetCenter(cx,cy:integer);

      Procedure   LoadIdenty;
      Procedure   PushMatrix;
      Procedure   PopMatrix;

      Procedure   RotateX(degree:real);
      Procedure   RotateY(degree:real);
      Procedure   RotateZ(degree:real);

      Procedure   Translate(x,y,z:integer);

      Procedure   Scale(x,y,z:real);

      Procedure   transform(var m1,m2:TMatrix4x4);
      Procedure   transformVector(var v:TVector4; m:TMatrix4x4);

      Procedure   Line3D(x1,y1,z1,x2,y2,z2:integer);
      Procedure   Line2D(x1,y1,x2,y2:integer);
      Procedure   Polygon(P1,P2,P2:TVector4);
     private
      fLength:integer;
      transformMatrix:TMatrix4x4;
      tempMatrix:TMatrix4x4;

      MatrixStack:array[0..49] of TMatrix4x4;
      CurrentStack:integer;

      CenterX,CenterY:integer;
     end;

  • Pa5ha © (29.09.07 03:19) [4]
    Давно не заглядывал, поэтому откапываю сттарую тему )

    Я в школе писал софтверный рендер на канве. Рисовалось сносно, считалось освещение. Но когда пришло время делать з-буфер и текстурирование я плюнул на это дело т.к. не смог. Мб где есть простые реализации этих штук на чистом паскале без всяких извратов?
  • homm © (29.09.07 08:47) [5]
    > [0] ПисательПлоскихИгр   (03.09.07 16:31)
    > отображение трёхмерных объектов на плоскость экрана с н0ля

    Что за нОль, и как на Ноле отображаются трехмерные объекты?
Есть новые Нет новых   [134431   +10][b:0][p:0.001]