Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Kitty Hello

#10381
Also, Nebel bedeutet, dass die Polygone der 3D Grafik je nach ihrem Abstand von der Kamera immer mehr die Farbe des Nebels annehmen. Es funktioniert also nur mit 3D Grafik, die dann "vernebelt" wird. Versuch doch mal das Meteorids3D Spiel und bau einen Nebel ein.
#10382
(noch) nicht
#10383
Code (glbasic) Select
// Linearer Nebel von z=100 bis z=1000
X_FOG RGB(128,128,128), FALSE, 100, 1000

// exponentieller Nebel (sieht besser aus, mehr Rechenzeit)
X_FOG RGB(128,128,128), FALSE,  1/2, 0
Das Zitat ist je völlig korrekt (zitiert und auch Grammatik) ich wollt nur sagen, dass man's eben nicht wörtlich ins deutsche übersetzen kann, weil bei uns "die Würfel" eben nicht als eine Einheit angesehen werden können.
:)
#10384
GLBasic - en / Com ports
2005-Sep-19
For now you can fool it with a call to EXECUTESHELL("cmd.exe /C echo parameters > COM1:")
I think of an idea to implement inline C/C++ in near future.
#10385
Programmcode belastet _immer_ den Prozessor. Sowas wie "Mach diese SUB bis ich sag is' gut" gibt's nicht.
Mach einfach eine SUB und ruf' die immer vor dem SHOWSCREEN auf (oder benutze sie statt dem SHOWSCREEN, indem Du das auch noch in der SUB machst)

alea iacta est -> (die) Würfel (plural) ist (singular) gefallen. (Im Latein gramatikalisch korrekt, wenn man die Würfel als eine Einheit ansieht. Nur mal so bischen Klugscheißen neben bei ;) )
#10386
also: Konstante Animationsgeschw. bekommt man doch mit dem Menüpunkt "Projekt/Einstellungen/Bildwiederholfrequenz" oder dem Befehl LIMITFPS.
In 3D ist das dann wieder bisserl nervig, weil schnelle Karten halt auch schnelle Grafik machen sollen. Sonst meine jeder das Spiel ruckelt mit 30 Bilder/sekunde auf einer G-Force9 2015 oder so...
Der X_MAKE3D macht ja nur einen 3D Viewport. Das muss man nach jedem SHOWSCREEN schon machen, weil der wieder alles so zurücksetzt wie es nach dem Programmstart war. (Kostet aber keine Zeit)

Also: Fackelanimation:
Code (glbasic) Select
FOR i=0 to 4
   LOADSPRITE "fackel"+i+".bmp"
NEXT

WHILE TRUE
   SPRITE MOD( GETTIMERALL() / 500, 5), 100, 100
   SHOWSCREEN
WEND
Im Detail:
GETTIMERALL() liefert eine Zeit in Millisekunden.
GETTIMERALL() / 500 eine Zeit in 1/2 Sekunden.
MOD( x, 5) liefert eine Ganzzahl (keine Kommas) zwischen 0 und 4.
Also, die aktuelle Zeit in 1/2 Sekunden auf den Bereich 0 und 4 begrenzt.

PingPong Animatinonen (012343210...) macht man so:

Code (glbasic) Select
  t = GETTIMERALL()/500
   voll = 4 // von 0 bis 4 z.B.
   ani = ABS(MOD(t, voll*2)-voll)
Im Detail:
MOD(t, voll*2) = 0,1,2,3,4,5,6,7
-voll:   -4, -3, -2, -1, 0, 1, 2, 3
ABS: 4, 3, 2, 1, 0, 1, 2, 3

Wenn man bisserl drüber nachdenkt gar nicht so schwer, oder?
#10390
GLBasic - de / Texturen
2005-Aug-26
klar. Bei 3D Objekten werden die Texturen weitergeführt, wenn die Tex-Coords >1  oder <0 sind.
#10391
GLBasic - de / Texturen
2005-Aug-25
Ach so: Das macht man oft so, dass man die Texturkoordinate vom Fussballfeld nicht mit 1.0, sondern mit 100.0 angibt -> Damit wird die 512x512 Textur eben 100x100 auf das Spielfeld gezerrt. Das kann man bei 3D Programmen auch so angeben. Bei AC3D gibt's eine Option "Textur kacheln" oder so (Tile texture)
#10394
GLBasic - de / Texturen
2005-Aug-25
Ähhh... Wenn das Objekt 1000x1000x1000 ist, dann wird es (3D) an der Seite nur 300x1000 sein, weil ja durch die Tiefenwirkung was weggeht. Man wird also ein 3D Objekt nie pixelgenau mit seinen Texturen hinbekommen. Also: Textur 512x512 oder 256x256 machen und einfach draufpappen. Wenn's zu bröslig wird, einfach die Kamera weiter weg ;)

Die Textur-Pixel (Texel) werden ja weich verschmolzen.
#10395
Hi,

there's folks who cannot remember the indices of their sprites/sounds. Or the numbering requires an insertion of a new resource (for aesthetical reasons). For all these I sketched a method of using names instead of numbers:

Code (glbasic) Select
   spr_human = DynLoadSprite("Human.bmp")

    SPRITE spr_human, 0,0
    SHOWSCREEN
    MOUSEWAIT


FUNCTION DynLoadSprite: file$
    LOADSPRITE file$, GLOBAL spr_id_max
    spr_id_max = spr_id_max + 1
    RETURN spr_id_max-1
ENDFUNCTION


FUNCTION DynLoadSound: file$, buffer
    LOADSOUND file$, GLOBAL spr_id_max, buffer
    snd_id_max = snd_id_max + 1
    RETURN snd_id_max-1
ENDFUNCTION


FUNCTION DynLoadObject: file$
    X_LOADOBJ file$, GLOBAL obj_id_max
    obj_id_max = obj_id_max + 1
    RETURN obj_id_max-1
ENDFUNCTION
it's obvious what I mean, isn't it? All these functions should go in C:\Program Files\GLBasic\Projects\Common\DynLoad.gbas and can be inserted in any project from there easily.

Regards,
Gernot