ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
403
403
EMPFEHLEN
-
Hallo zusammen!
Anstatt für alles einen eigenen Thread aufzumachen habe ich mich entschlossen einfach alle meine Probleme zu sammeln und hier auf zulisten. Ich werde dann über die Tags für die Suchmaschinen die nötigen Infos geben, da ja der Titel die Funktion nicht mehr erfüllt.
Hier mal meine Probleme und Fragen sortiert nach der Dringlichkeit:
1. http://www.imagr.eu/up/4aeea600602bc_agyria.JPG
Je weiter man sich von den Texturen entfernt desto mehr wird das Gelände grün und blau bis es schlussendlich nur noch grün/blau ohne die alten Texturen ist. Ich vermute, es hat was mit den Mipmaps zu tun, allerdings bin ich selbst nach stundenlangem Googeln mit "mimap farbfehler", "mimap distanz farbe ändert sich", usw nicht auf ein vergleichbares Problem mit Lösung gekommen.
2. Alphamaps für Texturen.
Ich bin mir aus OpenGL gewohnt, dass ich einer Texture ganz simpel eine weitere Textur hinzufügen kann, die nur Alphawerte besitzt und dass diese Alphatexur dann verwendet wird um die andere Textur über bereits bestehende zu blenden. Dies geschah da mit:
Code :1
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 64, 64, 0, GL_ALPHA, GL_UNSIGNED_BYTE, map[index]);
und beim Zeichnen mit
Code :1 2 3 4 5
glActiveTextureARB(GL_TEXTURE0_ARB); glBindTexture(GL_TEXTURE_2D, texture[i]); glActiveTextureARB(GL_TEXTURE1_ARB); glBindTexture(GL_TEXTURE_2D, alphamap[i - 1]);
Gibt es in directX einen vergleichbaren Vorgang?
3. Mausklicks
Ich versuche momentan gerade die Koordinaten eines Mausdrucks zu ermitteln. Dazu habe ich bisher den Punkt auf der zFar-Ebene und den Punkt auf der zNear-Ebene. Nun ist das Problem, dass ich ja wissen müsste, wo diese Gerade in mein Terrain einschlägt. Intersection habe ich bisher nur für Meshes gefunden, aber mein Terrain ist ja kein Mesh sondern ganz viele Vertices. Gibt es eine Möglichkeit, wie ich meinen zNear -> zVar - Strahl mit diesen Vertices intersektieren lassen kann?
Ich bin für jeden Tipp oder jeden Hinweis (am besten einfach einen Leitfaden oder ein wichtiges Schlüsselwort für mein Problem, keine fertige Lösung, ich möchte es nämlich verstehen und selber lösen
) äusserst dankbar!
Gruss
Cromon
-
Hallo zusammen!
Beim Punkt Alphamaps bin ich doch schon etwas weiter gekommen. Ich habe eine Ahnung, wie ich das machen könnte, aber es funktioniert noch nicht. Das Rendering mache ich jetzt so:
Code :1 2 3 4 5 6 7 8 9 10 11 12
for(ui32 i = 0; i < m_header.nTexLayers; ++i) { IDirect3DDevice9* dev = m_3dMgr->GetDevice(); dev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); dev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); dev->SetTexture(1, m_alphaMaps[i]); dev->SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); dev->SetTextureStageState(1, D3DTSS_ALPHAARG2, D3DTA_CURRENT); dev->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); m_3dMgr->SetTexture(m_textures[i], 0); m_3dMgr->DrawPrimitives(m_vbuffer, D3DPT_TRIANGLESTRIP, m_striplen, VERTEX_3FT2, m_indices, 145); }
Eigentlich mit der Absicht, dass der Alphawert von ARG2 (D3DTA_CURRENT -> alphamap) genommen wird für die Textur, die ich Rendere.
Die Alphamap an sich wurde so erstellt:
Code :1 2 3 4 5 6 7
HRESULT hRes = D3DXCreateTexture(sD3DMgr.GetDevice(), 64, 64, 1, 0, D3DFMT_A8, D3DPOOL_MANAGED, &m_alphaMaps[a]); IDirect3DSurface9* pSurf; m_alphaMaps[a]->GetSurfaceLevel(0, &pSurf); RECT r; r.top = r.left = 0; r.bottom = r.right = 64; hRes = D3DXLoadSurfaceFromMemory(pSurf, 0, 0, map[a], D3DFMT_A8, 0, 0, &r, D3DX_DEFAULT, 0);
Man hat zwar schon einen Unterschied feststellen können, allerdings werden die einzelnen Texturphasen einfach entweder mit 255 Alpha oder mit 0 Alpha dargestellt.
Woran könnte das liegen?
Gruss
Cromon
-
Müsste das nicht
dev->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
sein? Sonst selektierst du ja nach wie vor das vorliegende Alpha.
-
Hallo Endurion,
Ja, da war einiges komisch. Gut sortiert habe ich jetzt das bekommen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
m_3dMgr->SetTexture(m_textures[i], 0); dev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); // color dev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); dev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE); dev->SetTexture(1, m_alphaMaps[i]); dev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG2); // colorstage dev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE); dev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT); dev->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); // alphastage dev->SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_CURRENT); dev->SetTextureStageState(1, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
Was seinen Dienst einwandfrei verrichtet
Ähnliche Themen
-
JTables, diverse Probleme
Von PHlL im Forum JavaAntworten: 5Letzter Beitrag: 25.01.08, 13:07 -
diverse Probleme/Unklarheiten mit Axis2
Von y0dA im Forum JavaAntworten: 0Letzter Beitrag: 22.10.07, 12:26 -
Diverse Probleme mit IE6 vs FF
Von Papi62 im Forum CSSAntworten: 8Letzter Beitrag: 21.09.07, 17:05 -
Diverse Intranet-Webserver Probleme...
Von EVIL-WAX im Forum Hosting & WebserverAntworten: 6Letzter Beitrag: 09.03.06, 13:43 -
diverse probleme (ua. mit premiere)
Von sani im Forum Videoschnitt, Videotechnik & -produktionAntworten: 7Letzter Beitrag: 25.08.03, 20:30





Zitieren
Login






