Hi,
erstmal vielen Dank für den Hinweis, daran hats gelegen.
Wenn ich es so in tbGUIImage schreibe geht es:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
tbDirect3D& D3D = tbDirect3D::Instance();
tbEffect* pEffect = m_pGUI->GetImageEffect();
pEffect->GetEffect()->SetTexture("Image", m_pTexture);
D3D.SetSS(0, D3DSAMP_MINFILTER, D3DTEXF_NONE);
D3D.SetSS(0, D3DSAMP_MAGFILTER, D3DTEXF_NONE);
// Vertexformat setzen
D3D.SetFVF(tbGUIVertex::dwFVF);
// Dreiecke zeichnen
int iNumPasses = pEffect->Begin();
for(int i = 0; i < iNumPasses; i++)
{
pEffect->Pass(i);
D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex,
sizeof(tbGUIVertex));
}
pEffect->End();
pEffect->GetEffect()->SetTexture("Image", NULL);
//Vorherige Einstellungen wieder herstellen
if(D3D.m_Caps.PrimitiveMiscCaps & D3DPTFILTERCAPS_MINFANISOTROPIC) D3D.SetSS(0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);
else D3D.SetSS(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
if(D3D.m_Caps.PrimitiveMiscCaps & D3DPTFILTERCAPS_MAGFANISOTROPIC) D3D.SetSS(0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);
else D3D.SetSS(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
|
Ich fänds jetzt aber noch einfacher wenn ich diese Sampler-States direkt in den ImageEffekt schreiben könnte:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
TEXTURE Image;\n"
"\n"
"TECHNIQUE T1\n"
"{\n"
" PASS P1\n"
" {\n"
" Texture[0] = <Image>;\n"
" MINFILTER[0] = NONE;\n"
" MAGFILTER[0] = NONE;\n"
" ZEnable = False;\n"
" ZWriteEnable = False;\n"
" Lighting = False;\n"
" ColorVertex = True;\n"....
|
Leider funktioniert das so nicht, auch nicht wenn ich statt NONE einfach 0 schreibe. In der Log steht immer "Keine gültige Technik gefunden", wie muss ich das denn in den Effekt schreiben, damit es funktioniert?
Vielen Dank schonmal im Voraus, viele Grüße
Andreas
PS: Mal eine Frage warum steht (zumindest in der Vorschau) ******* statt "Voraus" mit doppel r)?