|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 05.02.2005, 19:37 Titel: Zu blöd zum Billboarden |
|
|
Trotz der Sache mit dem D3DX-Zeug hab ich noch andere Sorgen. Umso verzweifelter bin ich jetzt, wo ich merke, dass ich scheinbar nicht mal mehr ein Billboard hinkriege:
CPP: | #define D3D_BILLBOARDVERTEX (D3DFVF_XYZ | D3DFVF_TEX1)
struct BillboardVertex
{
FLOAT x, y, z;
FLOAT tu,tv;
};
BOOL C3DBillboard::CreateBillboard(char *Texture)
{
m_lpResManager->AddTexture(Texture);
m_lpTexture = m_lpResManager->GetTexture(Texture);
BillboardVertex BillboardVertices[] =
{
{ -1.0f, -1.0f, -1.0f, 0.0f, 1.0f },
{ -1.0f, 1.0f, -1.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, -1.0f, 1.0f, 0.0f },
{ 1.0f, 1.0f, -1.0f, 1.0f, 0.0f },
{ 1.0f, -1.0f, -1.0f, 1.0f, 1.0f },
{ -1.0f, -1.0f, -1.0f, 0.0f, 1.0f },
};
m_lpD3DDevice->CreateVertexBuffer(6* sizeof(BillboardVertex),
0,
D3D_BILLBOARDVERTEX,
D3DPOOL_DEFAULT,
&m_lpVB,
NULL);
void* pVertices;
m_lpVB->Lock(0,sizeof(BillboardVertices),(void**)&pVertices,0);
memcpy(pVertices, BillboardVertices, sizeof(BillboardVertices));
m_lpVB->Unlock();
return TRUE;
}
void C3DBillboard::Render(D3DXVECTOR3 vCamPos)
{
D3DXMATRIX WorldMatrix;
D3DXMATRIX TransMatrix;
D3DXMATRIX RotationMatrix;
D3DXMATRIX RotationMatrixX;
D3DXMATRIX RotationMatrixY;
if( vCamPos.x < 0.0f )
D3DXMatrixRotationY( &RotationMatrixY, -atanf(vCamPos.z/vCamPos.x)+D3DX_PI/2 );
else
D3DXMatrixRotationY( &RotationMatrixY, -atanf(vCamPos.z/vCamPos.x)-D3DX_PI/2 );
D3DXMatrixIdentity(&RotationMatrixX);
D3DXMatrixMultiply(&RotationMatrix, &RotationMatrixX, &RotationMatrixY);
D3DXMatrixTranslation(&TransMatrix,0.0f,0.0f,0.0f);
D3DXMatrixMultiply(&WorldMatrix,&RotationMatrixY,&TransMatrix);
m_lpD3DDevice->SetTransform(D3DTS_WORLD,&WorldMatrix);
m_lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_lpD3DDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA); m_lpD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA); m_lpD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
m_lpD3DDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
m_lpD3DDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 );
m_lpD3DDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
m_lpD3DDevice->SetTexture(0, m_lpTexture);
m_lpD3DDevice->SetTextureStageState(0, DTSS_COLOROP, D3DTOP_SELECTARG1);
m_lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
m_lpD3DDevice->SetFVF(D3D_BILLBOARDVERTEX);
m_lpD3DDevice->SetStreamSource(0,m_lpVB,0,sizeof(BillboardVertex));
m_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);
m_lpD3DDevice->SetTexture(0, NULL);
m_lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
m_lpD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
}
|
Hmm, ich seh nur ein weißes Quadrat. Keine Textur. Und bin langsam am verzweifeln. Vermutlich hab ich irgendwie eine Kleinigkeit wieder mal übersehn....
Jaa, ich weiß da is noch D3DX drin... Könnt ihr mir trotzdem irgendwie helfen? _________________ "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: 05.02.2005, 19:40 Titel: |
|
|
1) Textur korrekt geladen
2) wie schaun die Alphainfos der Textur aus ? _________________ "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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.02.2005, 19:44 Titel: |
|
|
Schmeiss erstmal den ganzen Renderstate mist raus mit Alphablending und co. und lass nur das drin was du zum rendern einer Textur brauchst!
Wenn Du bis dahin noch keine Textur siehst solltest Du Dir Deinen Resourcenmanager mal genauer angucken, er gibt dann sehr wahrscheinlich einen NULL-Pointer zurück als Texturobjekt. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
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: 05.02.2005, 19:46 Titel: |
|
|
1. Hmm Textur is korrekt geladen, klappt auch mit
CPP: | m_lpD3DDevice->SetTexture(0, m_ResManager->GetTexture("SchonGeladen.png")); |
nicht.
2. Ich seh gar keine Textur, ob Alpha oder net...Habs auch schon mit der vom Boden und von den Bäumen probiert, aber es bleibt weiß.
[Edit]
(Patrick) Hab ich schon...Aber das ändert auch nichts... _________________ "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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.02.2005, 19:54 Titel: |
|
|
HomeLess_PunkDrummer
dann gibt m_ResManager->GetTexture(); sehr wahrscheinlich einen NULL-Pointer zurück oder einen "Defekten".
Achja, falls Du ICQ hast, schreib mich mal an und ich geb Dir nen Lauffähigen Texturmanager _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
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: 05.02.2005, 19:59 Titel: |
|
|
Hmm ICQ habsch leider net-> Woher nehmen oder stehlen?
Der Texturmanager is aber glaub ich okay... Ich werd mal die Textur manuell laden und schauen was passiert.
Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir.
Gruß _________________ "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: 05.02.2005, 20:01 Titel: |
|
|
HomeLess_PunkDrummer hat Folgendes geschrieben: | Hmm ICQ habsch leider net-> Woher nehmen oder stehlen? |
Is kostenlos www.icq.com.
HomeLess_PunkDrummer hat Folgendes geschrieben: | Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir.
|
Müsst ihr dauernt in der Wunde rumbohren ? Auch wenns gut gemeint ist, anderen Usern gehts dadurch auch nur schlechter. _________________ "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: 05.02.2005, 20:02 Titel: |
|
|
Oh sorry war echt nur gut gemeint. _________________ "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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.02.2005, 20:02 Titel: |
|
|
HomeLess_PunkDrummer hat Folgendes geschrieben: | Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir. |
Geht immer mehr Bergab... naja lassen wir das nun.
Achja ICQ bekommt man bei www.icq.com . _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
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: 06.02.2005, 11:52 Titel: |
|
|
Okay, ich habs.
Nein, ich sag nicht wo der Fehler lag. Wär echt zu peinlich...^^
Trotzdem danke, icq werd ich auch gleich installieren.
Gruß _________________ "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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
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: 06.02.2005, 12:03 Titel: |
|
|
Hast du.
Allerdings ist das nicht oben im Code. Ich hatte den Fehler beim reinschreiben nicht gemacht...
Okay, wenn ihr versprecht mich nicht zu verbrennen:
CPP: | m_ResManager->GetTexture(Texture);
m_lpTexture=m_ResManager->GetTexture(Texture); |
Schande über mich... _________________ "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 |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 06.02.2005, 16:59 Titel: |
|
|
Puuh...ein weiterer Abgrund tut sich auf:
Das drehen des Billboards in der Horizontalen ist klar: CPP: | float DistX = vCam.x -m_vPos.x;
float DistZ = vCam.z -m_vPos.z;
if(DistX < 0.0f )
D3DXMatrixRotationY( &RotationMatrixY, -atanf(DistZ/DistX)+D3DX_PI/2 );
else if(DistX>0.0f)
D3DXMatrixRotationY( &RotationMatrixY, -atanf(DistZ/DistX)-D3DX_PI/2 ); |
ABer wie siehts mit der Vertikalen aus? Dazu brauch ich eine Distanz DistXZ.
Diese würde die Distanz in der Draufsicht zwischen Kameraposition und Billboardposition angeben. Aber wie ausrechnen?
CPP: | DistzXZ = sqrt(sqr(DistX)+sqr(DistZ)); |
Satz des Pythagoras halt...Aber dann wird DistXZ immer positiv! Sie muss jedoch negativ sein können, da die Kamera ja nicht immer in positive Z-Richtung blickt!...
Was tun _________________ "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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 06.02.2005, 21:17 Titel: |
|
|
HomeLess_PunkDrummer hat Folgendes geschrieben: | Satz des Pythagoras halt...Aber dann wird DistXZ immer positiv! Sie muss jedoch negativ sein können, da die Kamera ja nicht immer in positive Z-Richtung blickt!...
Was tun |
Ich nehme mal an, DistXZ soll 'Distanz' heißen. Da Strecken nie negativ sein können, hat das ja auch seine Richtigkeit mit dem Satz des Pythagoras.
Ist es denn nicht eigentlich egal, ob die Kamera jetzt hinter oder vor dem Billboard steht? Du musst es doch einfach nur mit der Kamera mitdrehen... _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
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: 07.02.2005, 14:37 Titel: |
|
|
Ah ja habs grad gemerkt...Ich muss es erst um die X-Achse drehn und dann um die Y-Achse, dann müsste es passen.
CPP: | if(DistXZ!=0)
D3DXMatrixRotationX(&RotationMatrix, -atanf(DistY/DistXZ)+D3DX_PI/2);
if(DistX < 0.0f )
D3DXMatrixRotationY( &RotationMatrix, -atanf(DistZ/DistX)+D3DX_PI/2 );
else if(DistX>0.0f)
D3DXMatrixRotationY( &RotationMatrix, -atanf(DistZ/DistX)-D3DX_PI/2 ); |
Funzt aber net... Dreht sich nur um die Y-Achse.... _________________ "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 |
|
|
|
|
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
|