Войти
ФлеймФорумПрограммирование

Как зделать огонь на OpenGL ? (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
0:44, 20 окт. 2003

Я в ImageEditor'e  Borland'овском сделал текстуру я теберь парюсь как Андатру обшить.
      Help читал там нету.

Dopa, сушить вёсла!!!
Нет барабана нет Dopa.


#16
0:45, 20 окт. 2003

Я  ЗЗЗЗЗЗЗЗделал огонек
ПОК

#17
1:37, 20 окт. 2003


поподробнее о ЗООДВИЖКЕ.....ась???

______________________________________
'эффект огня....

void fire(GLfloat height,GLfloat witdh)
{
bigboom booom;
booom=static_cast<bigboom>(height+witdh);
drawboom(booom);//бубум бабах

....

}
дальше чуть чуть забыл;

откуда-то....из прошлого.....чушь всякая.....
Эффекты
Эффект огня. Используесря режим 320/200/256.
.386
fire_  segment use16 'code'
        assume  cs:fire_

        org    100h
begin:
        mov    al,13h
        int    10h

        dec    cx
        mov    dx,3c9h
@@p1:
        sub    al,cl
        out    dx,al
        xor    al,al
        out    dx,al
        out    dx,al
        loop    @@p1


        push    0a000h
        pop    ds

again:
        ;xor    ax,ax ; if you wanna to clear pixel
        ; delete ';' and all be ok..

        mov    si,48960
f1:
        add    al,[si-320]
        shr    al,1
        add    al,[si]
        shr    al,1
        mov    [si-320],al
        inc    si
        jnz    f1

        sub      si,320
r1:
        in      al,40h
        mov    bh,al
        mov    al,cs:[si+bx]
        and    al,95
        mov    [si],al
        inc      si
        jnz      r1

        in      al,60h
        ;dec    ax        ; if you wanna to press Esc and exit

delete ';'
        ;jnz    again
        das                ; if any key pressed then exit
        jc      again
        ;mov    al,3
        ;int    10h
        ret
ends
end begin

Пример вывода текста под углом и уходящего в даль. Подобие Star

Wars Text.
{$G+}
uses CRT;

const
  StartOffset = 30;
  Step = 3;
  CharWidth = 16;

var
  MaxLine: Word;
  Strings: array[0..255] of String[20];
  Font: array[0..255,0..7] of Byte;
  Steps: array[0..199] of LongInt;

procedure SetPalette;
var
  I: Integer;
begin
  for I := StartOffset to 200 do
  begin
    Port[$3C8] := I;
    Port[$3C9] :=

Round(63/(200-StartOffset)*I-63/(200-StartOffset)*StartOffset);
    Port[$3C9] := 0;
    Port[$3C9] := 0;
  end;
end;

procedure GetFont; assembler;
  asm
    push ds
    mov ax,1130h
    mov bh,3
    int 10h
    mov si,bp
    mov ax,ds
    push es
    pop ds
    mov es,ax
    mov di,offset Font
    cld
    mov cx,1024
    rep movsw
    pop ds
  end;
{$I-}
function ReadFile( Name: String ): Boolean;
var
  F: Text;
  S: String;
begin
  Assign( F, Name );
  Reset(F);
  if IOResult <> 0 then
  begin
    ReadFile := False;
    Exit;
  end;
  for MaxLine := 0 to 255 do
  begin
    if Eof(F) then Break;
    ReadLn( F, S );
    Strings[MaxLine] := Copy( S, 0, 20 );
  end;
  ReadFile := True;
end;

var
  PixLine: Word;

procedure DrawPixLine( N: Integer );
var
  I,
  StartOfs,
  RealLen,
  LineLen: Word;
  P: ^Char;
  Step: LongInt;
begin
  LineLen := Word(Length(Strings[PixLine shr 4])) * CharWidth *

N div 200;
  RealLen := Length(Strings[PixLine shr 4])*8;
  StartOfs := 320*N div 200;
  P := @Strings[PixLine shr 4][1];
  Step := Steps[N-1];
  asm
    mov ax,$A000
    mov es,ax
    mov ax,320
    mul N
    mov di,ax
    mov cx,320
    sub cx,LineLen
    shr cx,1
    push cx
    xor al,al
    rep stosb

    mov dx,PixLine
    and dx,15
    shr dx,1
    mov dh,byte ptr N
    mov si,word ptr P
    xor ax,ax
    xor bx,bx
@str_loop:
    push ax
    push bx
    mov ch,bl
    and ch,7
    mov cl,8
    sub cl,ch
    shr bx,3
    mov bl,[si+bx]
    shl bx,3
    add bl,dl
    adc bh,0
    add bx,offset Font
    mov al,[bx]
    mov bl,1
    shl bl,cl
    test al,bl
    je @no_draw
    mov es:[di],dh
    jmp @end_draw
@no_draw:
    mov byte ptr es:[di],0
@end_draw:
    inc di
    pop bx
    pop ax
    add ax,Step.Word[0]
    adc bx,Step.Word[2]
    cmp bx,RealLen
    jbe @str_loop

    pop cx
    xor al,al
    rep stosb
  end;
end;

var
  I: Integer;
  StartLine: Word;

begin
  if ParamCount < 1 then
  begin
    WriteLn( 'Usage : STARWAR <text file>' );
    Exit;
  end;
  if not ReadFile( ParamStr(1) ) then Exit;
  asm
    mov ax,13h
    int 10h
  end;
  SetPalette;
  GetFont;
  for I := StartOffset-1 to 199 do
    Steps := (100 shl 16) div (I+1);
  PixLine := 0;
  StartLine := 0;
  repeat
    PixLine := StartLine;
    for I := StartOffset to 199 do
    begin
      if PixLine >= (MaxLine shl 4) then PixLine := 0;
      DrawPixLine(I);
      Inc( PixLine );
    end;
    Inc( StartLine, Step );
    if StartLine >= (MaxLine shl 4) then StartLine := 0;
  until KeyPressed;
  asm
    mov ax,3h
    int 10h
  end;
end.

#18
2:39, 20 окт. 2003

Ты бы мне еще на Fortrane написал.

#19
3:29, 20 окт. 2003

Paronator
Деревня... это и есть Фортран.

P.S. Между прочем, язык еще в обиходе. Последняя версия (Borland Fortran 4.0), кстати, составляет достойную конкуренцию Delphi.
У меня, например, на нем несколько знакомых пишут...

#20
4:43, 20 окт. 2003

А мне дед бро Фортран расказывал.
      Я в. Люлю пошел.

#21
4:44, 20 окт. 2003

Если кто знает как на VIsual C++ То ........................
..........................................................................
......................................................................!!!!!!!!!!!!!!!!!

#22
17:25, 27 окт. 2003

Да барабан с текстурой это круто, боюсь даже кармаку это не под силу, а уж замер FPS это просто чума,
надо быть гением что бы это реализовать.

Не удевительно что этот форум во флейме сидит

#23
21:37, 27 окт. 2003

Да да ты прав и сидит долго.

#24
23:58, 27 окт. 2003

Вот он огоь!
http://www.gamedev.ru/download/?id=245

Только сорцы на VC++

#25
0:03, 28 окт. 2003

И кто такой этот Паронатор?? Глумится что ли кто-то? Уж очень уморно просто для ламера... ТАКИХ ламеров НЕ СУЩЕСТВУЕТ... Точнее существуют, но каждый очень коротко :))
none4
static_cast<> рулит навеки.. В данном контексте можн опопробовать ещё reinterpret_cast<> или const_cast<> :)))))))
А вообще после всех этих кастов, тайпайди и тайп_инфо, темплейтов, __деклспеков, мьюьтаблов, фастколлов и прочей ереси си стал тяжелее.. Гораздо....

#26
0:57, 28 окт. 2003

Большое тебеб спасибо Demiurg-HG за огонек

#27
1:09, 28 окт. 2003

Огонек красивый но че то нехватает
а нехватает текстуры.
Если тебе не трудно перепиши еще разок.
и используй glVertex чтоб координаты текстуры указать.
вот тогда будет огонек.

#28
20:28, 28 окт. 2003

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==8[  ]
Ну ладно, попробую...

#29
21:23, 28 окт. 2003

Demiurg-HG

Я от нехрен делать для разнообразия твой код на Blitzbasic перевёл( Blitzbasic-есть у меня такая фигня .:)....)так вот огонь там почему-то синий ...все попытки менять значения переменных приводило к непредсказуемым эффектам...:) Надо теперь попробывать на С#...Delphi....VB.....

хочешь посмотреть код:)

Graphics 640,480,32,2
 X_WIDTH=	800
 X_HEIGHT=	480
Dim scr(X_HEIGHT,X_WIDTH)
SetBuffer BackBuffer ()
While Not KeyDown(1)
Cls
scr(120,80)=455;
scr(120,160)=455;
scr(120,240)=455;
For i=1 To X_WIDTH-1
For l=1To X_HEIGHT-2

c = scr(l,i);
If (c>10 And Rand(0,50)>20) Then


scr(l  ,i+1)=c-7
scr(l  ,i-1)=c-7
scr(l  ,i-1)=c-7
scr(l+1,i  )=c-2
scr(l+2,i  )=c-2

EndIf

Next
Next
LockBuffer
For i=1 To  X_WIDTH-1
For l=1 To X_HEIGHT-2

WritePixelFast i,500-l,scr(l,i)
Next
Next
UnlockBuffer
Flip
Wend

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

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