 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 08:05 Titel: Skybox |
|
|
Buhuu...ich seh meine Objekte nicht mehr, sobald ich eine SkyBox rendere. Mein Programm ist fast ident mit dem Bsp. 'SkyBox' aus Kapitel 28. Ich poste hier nochmal die relevanten Teile:
Code: |
void CSkyBox::Render(D3DXVECTOR3 vPos)
{
D3DXMATRIX MatSkyBox;
// Skybox verschieben
D3DXMatrixTranslation(&MatSkyBox, vPos.x, vPos.y, vPos.z);
m_lpDevice->SetTransform(D3DTS_WORLD, &MatSkyBox);
m_lpDevice->SetFVF(D3DFVF_SBVERTEX);
m_lpDevice->SetStreamSource(0, VB_SkyBox, 0, sizeof(SBVERTEX));
m_lpDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
m_lpDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_lpDevice->SetSamplerState(0,D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
m_lpDevice->SetSamplerState(0, D3DSAMP_ADDRESSU , D3DTADDRESS_CLAMP );
m_lpDevice->SetSamplerState(0, D3DSAMP_ADDRESSV , D3DTADDRESS_CLAMP );
// Z-Buffer-Test abschalten
m_lpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
// die 6 Ebenen des Würfels rendern
for(int i=0;i<m_vecTextures.capacity();i++)
{
// passende Textur wählen
m_lpDevice->SetTexture(0, m_vecTextures[i]);
m_lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, i*4, 2);
}
// Z-Buffer-Test wieder einschalten
m_lpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
m_lpDevice->SetSamplerState(0, D3DSAMP_ADDRESSU , D3DTADDRESS_WRAP );
m_lpDevice->SetSamplerState(0, D3DSAMP_ADDRESSV , D3DTADDRESS_WRAP );
m_lpDevice->SetTexture(0, NULL);
} |
so wird z.B. der Boden gerendert:
Code: |
m_lpDevice->SetFVF(D3D_CUSTOMVERTEX);
m_lpDevice->SetMaterial(&m_FloorMaterial);
m_lpDevice->SetTexture(0, m_lpFloorTexture);
m_lpDevice->SetStreamSource(0, VB_Floor, 0, sizeof(CustomVertex));
m_lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
|
Ich habs jetzt schon x-mal verglichen und finde den Fehler einfach nicht. Ich nehm mal an, ich vergesse irgendwas an oder abzuschalten, aber bei den ganzen Einstellungen steig ich noch nicht wirklich durch  |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 09.11.2003, 11:52 Titel: |
|
|
Du musst die Skybox vor allem anderen Rendern. |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 12:40 Titel: |
|
|
das tue ich auch:
Code: |
void CScene::Render(void)
{
SkyBox.Render(m_vPos);
m_lpDevice->SetFVF(D3D_CUSTOMVERTEX);
m_lpDevice->SetMaterial(&m_RedMaterial);
// den datenstrom setzen
m_lpDevice->SetStreamSource(0, VB_Triangle, 0, sizeof(CustomVertex));
// das dreieck zeichnen (von pos 0 im buffer, 1 element)
m_lpDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
m_lpDevice->SetMaterial(&m_BlueMaterial);
m_lpDevice->SetStreamSource(0, VB_Cube, 0, sizeof(CustomVertex));
m_lpDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);
m_lpDevice->SetMaterial(&m_FloorMaterial);
m_lpDevice->SetTexture(0, m_lpFloorTexture);
m_lpDevice->SetStreamSource(0, VB_Floor, 0, sizeof(CustomVertex));
m_lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
m_lpDevice->SetTexture(0, NULL);
}
|
|
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.11.2003, 12:03 Titel: |
|
|
Oder du hast Probleme mit dem Z-Buffer. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 10.11.2003, 15:27 Titel: |
|
|
Der Z-Buffer sollte eigentlich schon funktionieren, ist ja im Grunde alles ident mit den Beipspielen, und ohne SkyBox funkts ja auch, ausserdem wird der ja vor dem Rendern der Skybox deaktiviert...
Die SkyBox ist nach unten hin auch offen, also sollte ich zumindest den Boden sehen, wenn ich direkt runterschau. |
|
Nach oben |
|
 |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 10.11.2003, 20:08 Titel: |
|
|
Vielleicht kann es sich mal jemand anschauen....
http://members.chello.at/devilme/3DTest.zip
Das Rendern der Skybox kann man in der Funktion Render() von CScene aktivieren. Bewegen kann man sich mit Mouse und den ESDF Keys.
Achja, das Problem mit den Normalvektoren, dass ich hier gepostet habe, kann man hier auch sehen...man merkt eh gleich, dass der Boden nicht richtig beleuchtet wird. |
|
Nach oben |
|
 |
DerJJ Junior JLI'ler
Anmeldedatum: 24.12.2002 Beiträge: 84
Medaillen: Keine
|
Verfasst am: 27.01.2005, 17:18 Titel: |
|
|
Hallo!
Hab ein Problem mit meiner Skybox,
ich weiß nicht so ganz wie ich meine Texturen auf die ganze Fläche strecken kann, bei mir werden die Texturen entweder gekachelt, oder, wenn ich
Code: | g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); |
mache, dann werden nur die Pixel gestreckt, die sich am rand des bildes sind, nicht aber das bild selber. Wie kann ich das ganze Bild strecken?
(C++,Visual Studio .NET, DirectX Dezember 2004 SDK)
Edit: Mal ne Anmerkung zum ersten beitrag:
Könnte es nicht auch
Code: | m_lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, i*3, 2); |
heissen und nicht ?
Zuletzt bearbeitet von DerJJ am 27.01.2005, 17:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 27.01.2005, 17:24 Titel: |
|
|
DerJJ hat Folgendes geschrieben: | Hallo!
Hab ein Problem mit meiner Skybox,
ich weiß nicht so ganz wie ich meine Texturen auf die ganze Fläche strecken kann, bei mir werden die Texturen entweder gekachelt, oder, wenn ich
Code: | g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); |
mache, dann werden nur die Pixel gestreckt, die sich am rand des bildes sind, nicht aber das bild selber. Wie kann ich das ganze Bild strecken?
(C++,Visual Studio .NET, DirectX Dezember 2004 SDK) |
Dazu muss das Modell selber geändert werden, indem die Texturkoordinaten von jedem Vertex geändert werden. Die Texturkoordinaten müssen im Bereich von -1 bis 1 sein um das zu erreichen was du willst. Am besten 0 bis 1. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
DerJJ Junior JLI'ler
Anmeldedatum: 24.12.2002 Beiträge: 84
Medaillen: Keine
|
Verfasst am: 27.01.2005, 17:27 Titel: |
|
|
Also, jede wand besteht aus 2 Dreiecken bei mir und ich hab die komplette Skybox selbst im Quellcode geschrieben. Die Texturkoordinaten sind da auch entsprechen entweder 0 oder 1.
Ich wüsste nicht was ich da jetzt sonst noch machen sollte. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 27.01.2005, 17:31 Titel: |
|
|
Zeig doch mal den ganzen relevanten Code, im Grunde sollte es so wie du beschrieben hast funktionieren. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
DerJJ Junior JLI'ler
Anmeldedatum: 24.12.2002 Beiträge: 84
Medaillen: Keine
|
Verfasst am: 27.01.2005, 17:33 Titel: |
|
|
Also:
Teil des erstellens der Skybox
Code: | CUSTOMVERTEX* pSkyBox;
int i = 0;
g_pSkyBox->Lock(0,0,(void**)&pSkyBox,0);
// Reihenfolge
// 1. Vorne
// 2. Hinten
// 3. Oben
// 4. Unten
// 5. Links
// 6. Rechts
//****************************************************************************
// vorne- linkes Dreieck
// oben links
pSkyBox[i].position = D3DXVECTOR3(-50.0f,50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 0.0f;
pSkyBox[i].tv = 0.0f;
i++;
// oben rechts
pSkyBox[i].position = D3DXVECTOR3(50.0f,50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 1.0f;
pSkyBox[i].tv = 0.0f;
i++;
// unten links
pSkyBox[i].position = D3DXVECTOR3(-50.0f,-50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 0.0f;
pSkyBox[i].tv = 1.0f;
i++;
// vorne- rechtes Dreieck
// oben rechts
pSkyBox[i].position = D3DXVECTOR3(50.0f,50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 1.0f;
pSkyBox[i].tv = 0.0f;
i++;
// unten rechts
pSkyBox[i].position = D3DXVECTOR3(50.0f,-50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 1.0f;
pSkyBox[i].tv = 1.0f;
i++;
// unten links
pSkyBox[i].position = D3DXVECTOR3(-50.0f,-50.0f,50.0f);
pSkyBox[i].normal = D3DXVECTOR3(0.0f,0.0f,0.0f);
pSkyBox[i].color = 0xffffffff;
pSkyBox[i].tu = 0.0f;
pSkyBox[i].tv = 1.0f;
i++;
//****************************************************************************
// hinten- linkes Dreieck
// oben links |
und hier das rendern:
Code: | g_pD3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
//g_pD3DDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
g_pD3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
g_pD3DDevice->SetStreamSource( 0, g_pSkyBox, 0, sizeof(CUSTOMVERTEX) );
g_pD3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pD3DDevice->SetTexture( 0, g_pTexSkyV );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0*3, 2);
g_pD3DDevice->SetTexture( 0, g_pTexSkyH );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 2*3, 2);
g_pD3DDevice->SetTexture( 0, g_pTexSkyO );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 4*3, 2);
g_pD3DDevice->SetTexture( 0, g_pTexSkyU );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 6*3, 2);
g_pD3DDevice->SetTexture( 0, g_pTexSkyL );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 8*3, 2);
g_pD3DDevice->SetTexture( 0, g_pTexSkyR );
g_pD3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 10*3, 2);
g_pD3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); |
|
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 28.01.2005, 14:40 Titel: |
|
|
Eigentlich müsste das wirklich passen. Was meinst du mit "Kacheln"?
Zur Not schau dir doch die im Buch an, oder die in den DXSDK Samples. _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 28.01.2005, 14:43 Titel: |
|
|
Ich hab das Programm von in gesehen, is aber weniger kacheln sonndern mehr was anders, liegt evtl daran das er Transformierte Vertexe nutzt (Einstellbar im FVF) _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 28.01.2005, 14:56 Titel: |
|
|
Eigentlich braucht er ja auch keine Normalenvektoren, aber daran liegt es sicher net.
Vielleicht mal probehalber nen umgestülpten Würfel aus nem XFile laden? _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 28.01.2005, 15:06 Titel: |
|
|
Er erstellt seinen Würfel im Code (siehe oben) _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|