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

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

02.08.2011, 10:27

Hilfe bei Sky-Box

Hi

Ich bräuche mal Hilfe bei dem Erstellen einer Sky-Box.
Ich hab "Das erste Dreieck" mit den weiteren kapiteln wachsen lassen
und jetzt komme ich zur sky-Box, will diese anwenden doch es funktioniert nicht.
Hab soweit es geht den Code zur Sky-Box aus dem kaptitel "Enviroment-Mapping"
kopiert.

Ich schicke mal alles was mit ser skybox zutun hat:

Struktur:

C-/C++-Quelltext

1
2
3
4
5
6
7
struct SMap
{
    tbVector3   vPosition;
    tbVector3   vTexture;
    static const DWORD  dwFVF;      // Vertexformat (statisch)
};
const DWORD SMap::dwFVF = D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE3(0);


globale variablen:

C-/C++-Quelltext

1
2
SMap                    MapVertex[8];
unsigned short          MapIndex [36];


In der Render-Funktion direkt nach BeginScene ();

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
g_pD3DDevice->SetFVF(SMap::dwFVF);

    g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    g_pD3DDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
    g_pD3DDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);

    g_pD3DDevice->SetTexture(0, g_pEnvMap);
    g_pD3DDevice->SetTexture(1, NULL);

    
    g_pD3DDevice->SetTransform(D3DTS_WORLD, (D3DMATRIX*)(&mWorld));

    if(FAILED(hResult = g_pD3DDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST,    // Dreiecksliste
                                                            0,                      // Beginn bei 0
                                                             8,                     // Größter Index
                                                             12,                    // Anz. Dreiecke
                                                            MapIndex,               // Indizes
                                                             D3DFMT_INDEX16,        // 16 Bits
                                                             MapVertex,             // Vertizes
                                                             sizeof(SMap))))        // Vertexgröße
    {
        // Fehler beim Zeichnen!
        TB_ERROR_DIRECTX("g_pD3DDevice->DrawIndexedPrimitiveUP", hResult, TB_ERROR);
    }


Und dann noch in der initScene ();

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
25
26
27
28
29
30
31
// Die Vertizes der Sky-Box erstellen
    MapVertex[0].vPosition = tbVector3 (   0.5,   0.5,  -0.5);
    MapVertex[1].vPosition = tbVector3 (  -0.5,   0.5,  -0.5);
    MapVertex[2].vPosition = tbVector3 (  -0.5,  -0.5,  -0.5);
    MapVertex[3].vPosition = tbVector3 (   0.5,  -0.5,  -0.5);
    MapVertex[4].vPosition = tbVector3 (   0.5,   0.5,   0.5);
    MapVertex[5].vPosition = tbVector3 (  -0.5,   0.5,   0.5);
    MapVertex[6].vPosition = tbVector3 (  -0.5,  -0.5,   0.5);
    MapVertex[7].vPosition = tbVector3 (   0.5,  -0.5,   0.5);

    for (int iVertex=0; iVertex<8; iVertex++)
        MapVertex[iVertex].vPosition *= 10;

    // Die Texturkoordinaten brauchen wir nicht per Hand einzutragen: sie entsprechen
    // ganz einfach den Positionsangaben.
    for(int iVertex = 0; iVertex < 8; iVertex++)
    {
        MapVertex[iVertex].vTexture = MapVertex[iVertex].vPosition;
    }
    

    // Nun tragen wir die Indizes ein.
    unsigned short ausIndex[36] = {0, 3, 7,   0, 7, 4,  // Vorderseite
                                   2, 1, 5,   2, 5, 6,  // Hinterseite
                                   1, 0, 4,   1, 4, 5,  // Linke Seite
                                   3, 2, 6,   3, 6, 7,  // Rechte Seite
                                   0, 1, 2,   0, 2, 3,  // Oberseite
                                   6, 5, 4,   6, 4, 7}; // Unterseite

    // In das globale Array kopieren
    memcpy(MapIndex, ausIndex, 36 * sizeof(unsigned short));


Also er zeigt schon was an dur das hat nichts mit der textur in der EnvMap.dds zu tun!
Es ist total verzehrt (seht!!):
[/URL][/img]
Ich hab das gefühl als ob es an den Texturkoordinaten liegt...

Für jede Antwort bin ich dankbar!!

ProAmateur
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

2

02.08.2011, 10:28

Oh ich hab das Bild vergessen:

(Link)


http://s7.directupload.net/file/d/2604/klydkbzy_png.htm
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

3

02.08.2011, 11:40

Da schaust du dir besser noch mal den ursprünglichen Code an. ;)
Das sieht ziemlich verwurschtelt aus!
fka tm

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

02.08.2011, 11:48

Wie generierst du denn die Texturkoordinaten?

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

5

02.08.2011, 11:52

@ TrikkieMikkie

hää ich hätte gedacht dass ich das doch recht übersichtlich gemacht hab...:-(
Was meinst du denn was unübersichtölich waäre?

@ dot
Die Texturkoordinaten generire ich dioch in der Renderfunktion wie im Buch...
die sind die selben wie die Vertexkoordinaten...

Sieht einer von euch denn da einen Fehler??
Bitte helgft mir!!ich werd noch verrückt ^^
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

6

02.08.2011, 11:59

Vielleicht wäre es sinnvoller, wenn du das komplette Projekt mal irgendwo hoch lädst.
Oder den kompletten Code z.B. hier postest.
fka tm

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

02.08.2011, 11:59

Aber du musst du nicht einen TextureStageState() setzen damit die Texcoords richtig verwendet werden?

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

8

02.08.2011, 12:02

aber ich hab gedacht dass das nur für die Enviroment mapping gebraucht wird...also für dass spiegeln
und das wollte ich ja da nicht haben nur die sky-box....

Was müsste ich denn da dann einfügen?
Dass er die Koordinaten selbst findet?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

9

02.08.2011, 12:04

lao hier is der code der in der projektmappe von "das erste Dreieck" drinn ist.
http://chopapp.com/#q8qe08mo
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

10

02.08.2011, 12:06

Außenrum wollte ich halt durch verschiedene quader mein zimmer darstellen.
Dafür is die structur SVertex
und mit initValues () legt man die koordinaten fest.
nun wollte ich nur nioch eine sky-box ausenrum legen....
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Werbeanzeige