tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
403
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    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
     

  2. #2
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    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
     

  3. #3
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Müsste das nicht

    dev->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );

    sein? Sonst selektierst du ja nach wie vor das vorliegende Alpha.
     

  4. #4
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    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

  1. JTables, diverse Probleme
    Von PHlL im Forum Java
    Antworten: 5
    Letzter Beitrag: 25.01.08, 13:07
  2. Antworten: 0
    Letzter Beitrag: 22.10.07, 12:26
  3. Diverse Probleme mit IE6 vs FF
    Von Papi62 im Forum CSS
    Antworten: 8
    Letzter Beitrag: 21.09.07, 17:05
  4. Diverse Intranet-Webserver Probleme...
    Von EVIL-WAX im Forum Hosting & Webserver
    Antworten: 6
    Letzter Beitrag: 09.03.06, 13:43
  5. diverse probleme (ua. mit premiere)
    Von sani im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 7
    Letzter Beitrag: 25.08.03, 20:30

Stichworte