Immer wieder haben manche Leute das Problem, dass Galactica, Breaknoid oder Beispielprogramme direkt nach dem Start abstürzen.
Im Log steht dann meist ein Fehler mit tbFont und dem Erstellen von Effekten.
a la
FEHLER: Der Aufruf von D3DXCreateEffect verursachte den DirectX-Fehler E_FAIL! Beschreibung: An undetermined error occurred (tbeffect.cpp, Zeile 63, Funktion tbEffect::Init)
FEHLER: Fehler beim Erstellen des Effekts! (tbfont.cpp, Zeile 100, Funktion tbFont::Init)
FEHLER: Fehler beim Laden der Schriftart!
Was ist nur der Fehler?
Die Effekte!
In Effekt-Datein dürfen seit einiger Zeit die Variablennamen nicht so benannt werden wie Variablentypen.
Zum Beispiel geht "TEXTURE Texture" nicht mehr. (wie in c++)
Ich habe die TriBase-Engine folgendermaßen angepasst:
|
Quellcode
|
1
2
3
4
5
|
tbFont.cpp Zeile 76 TEXTURE Texture; -> TEXTURE Tex0;
82 <Texture> -> <Tex0>
104 "Texture" -> "Tex0"
230 "Texture" -> "Tex0"
tbSkyBox.cpp Zeile 148 "Texture" -> "Tex0"
|
Einfach Stelle suchen und umbenennen.
Außerdem müssen noch (fast) alle Effektdateien (.fx) angepasse werden.
Einfach aus "Texture" "Tex0" machen.
ABER!!!
1. Wenn da steht "TEXTURE Texture", dann muss "TEXTURE Tex0" daraus gemacht werden.
2. Wenn "<Texture>" (in <eckigen Klammern>) da steht, dann muss "<Tex0>" daraus gemacht werden
3. Wenn 1. UND 2. nicht zutreffen, muss "Texture" so bleiben wie es ist, denn da wird nicht
Die gewählte Textur "Tex0" verwendet, sondern gesagt dass die Quelle eine Textur ist. Also so lassen.
Beispiel: "GUI.fx" aus "...\Galactica\Data\" sollte danach so aussehen:
|
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
|
TEXTURE Tex0; //1. Regel
TECHNIQUE T1
{
PASS P1
{
Texture[0] = <Tex0>; //2. Regek
ZEnable = False;
ZWriteEnable = False;
ColorOp[0] = Modulate;
ColorArg1[0] = Texture; //3. Regel
ColorArg2[0] = Current;
AlphaOp[0] = Modulate;
AlphaArg1[0] = Texture; //3. Regel
AlphaArg2[0] = Current;
ColorOp[1] = Disable;
AlphaBlendEnable = True;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;
Lighting = False;
ColorVertex = True;
CullMode = None;
}
}
|
Wenn noch etwas fehlt, bitte bescheid sagen.