Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SirForce

Alter Hase

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

11

25.06.2008, 19:02

Zitat von »"defaultplayer^^

sehr komisch. das ist es eben nicht.
ich schau dann mal, wo ich den ColorKey ändern kann. hab ich aber halt noch nirgends gesehn


Du musst den ColorKey doch auch eingestellt haben? Also musst du ihn da auch ändern können!
Btw, was ist eigentlich der Colorkey für schwarz?
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

12

25.06.2008, 19:09

Zitat

Du musst den ColorKey doch auch eingestellt haben? Also musst du ihn da auch ändern können!

benutze die TriBase. da wirds wohl schon irgendwo eingetragen sein. finds gerade nicht, such aber noch weiter.

Zitat

Btw, was ist eigentlich der Colorkey für schwarz?

kenn mich nicht so gut aus. in hexadezimal ist schwarz "000000".

edit:
kenn mich auch mit effekt-files nicht gut aus.
aber vielleicht liegts daran. ich poste hier mal den code

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
TEXTURE Texture;

TECHNIQUE T1
{
    PASS P1
    {
        Texture[0]      = <Texture>;
        ZEnable         = True;
        ZWriteEnable        = False;

        ColorOp[0]      = Modulate;
        ColorArg1[0]        = Texture;
        ColorArg2[0]        = Current;
        AlphaOp[0]      = Modulate;
        AlphaArg1[0]        = Texture;
        AlphaArg2[0]        = Current;
        ColorOp[1]      = Disable;

        AlphaBlendEnable    = True;
        SrcBlend        = SrcAlpha;
        DestBlend       = One;
        AlphaTestEnable     = True;
        AlphaFunc       = Greater;
        AlphaRef        = 7;

        Lighting        = False;
        ColorVertex     = True;
        CullMode        = None;
    }
}

13

26.06.2008, 15:04

:), hab das jetzt hinbekommen in dem ich bisschen an der einstellungen vom alpha-blending rumgefummelt hab.
jetzt möchte ich aber z.b. dass nur die rauch sprites gerendert werde.
das geht ja normal mit "Render(von, bis);", aber das funktioniert nicht so ganz wie ich das möchte. da muss ich schon die spritetypen angeben?

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

14

30.06.2008, 21:02

Nochmal zu ColorKeys:

Normalerweise legt mann den ColorKey beim Laden der Texture fest:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
    if(g_Tex.LoadTexture(STAIN_TEXTURE_PATH,
                        D3DX_DEFAULT,
                        D3DX_DEFAULT,
                        1,
                        D3DFMT_UNKNOWN,
                        0,
                        D3DPOOL_MANAGED,
                        D3DX_DEFAULT,
                        D3DX_DEFAULT,                       D3DCOLOR_XRGB(255,0,255)) == NULL){ // Der Letzte Parameter ist der ColorKey

        TB_ERROR("Fehler beim Laden einer Textur",TB_ERROR);
    }


Wenn du später mit Modellen arbeitest musst du für die Engine(die das Laden der Texturen für dich übernimmt) den Colorkey in der Effektdatei festlegen, etwa so:

C-/C++-Quelltext

1
2
3
4
5
6
7
TEXTURE Texture1;
DWORD   Texture1ColorKey    = 0x00000000;

... // Technique1 - Pass1


        Texture[0]          = <Texture1>;
...

(der Code wird später von dem TriBase Tool generiert, du musst also nur den ColorKey umschreiben ;) )

Bei Problemen mit Hexadezimalen kannste so ziemlich jedes Zeichenprogramm benutzen - In der Farbauswahl steht de Hexa Code meistens dabei(sogar bei Paint ;) )

Alternativ kann man beim Makro D3DCOLOR_XRGB(255,0,255) im RGB Format eingeben und erhält ne Hexadezimale für die Farbe (255,0,255 entspricht 0xFF00FF und ist Pinkfarben - die übliche Farbe für ColorKeys da man die kaum braucht)

Zum Rendern:

Naja zuerst erstellst du ja Spritetypen für die Spriteengine, danach fügst du die einzelnen Sprites mit AddSprite hinzu und gibst dabei jedes mal den Spritetypen an(also die Nummer mit der du ihn erstellt hast). AddSprite gibt dir dann je Sprite die Nummer zurück, die angibt wann das Sprite beim Rendern an der Reihe ist.

Hingegen beim Rendern musst du dann die Nummer der Sprites in der Engine benutzen - also das was du von AddSprite zurück kriegst. Um nicht für jedes Sprite nochmal die Nummer speichern zu müssen solltest du alle Rauchsprites hintereinander hinzufügen - dann brauchst du nur noch die Nummer des Ersten und die Anzahl der Sprites, bzw. die Nummer des Letzten zu kennen.

Wenn du also zum Beispiel schon 10 Sprites in der Engine hast und dann 100 Rauchpartikel hinzufügst musst du somit Render(9,109) angeben um alle deine Rauchsprites zu
Zeichnen ;)
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

15

01.07.2008, 16:11

danke, werde es mit dem color key demnächst ausprobieren. der letzte teil find ich ein bisschen komisch. bei mir werden immer mal wieder rauchpartikel erzeugt, da weiß ich nicht genau wieviele ich dann jetzt hab.
ich werd dann jetzt mal mirm color key schauen, das ist nämlich auf meine art ziemlich aufwändig^^

16

01.07.2008, 16:11

danke, werde es mit dem color key demnächst ausprobieren. der letzte teil find ich ein bisschen komisch. bei mir werden immer mal wieder rauchpartikel erzeugt, da weiß ich nicht genau wieviele ich dann jetzt hab.
ich werd dann jetzt mal mirm color key schauen, das ist nämlich auf meine art ziemlich aufwändig^^

edit: sry, weiß nicht warum das 2 mal gepostet hat

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

17

01.07.2008, 16:55

das passiert, wenn man den zurück-button beim browser betätigt und dann nochmal abschickt. das passiert manchmal sogar unabsichtlich.

Werbeanzeige