Fehler beim laden der Textur



  • IDirect3DTexture9* t = renderer->Textures[Filename];
    				D3DXCreateTexture(renderer->Device,100,100,1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,&t);
    				D3DLOCKED_RECT pLockedRect;
    				t->LockRect(0, &pLockedRect, 0, 0);
    				for (int i = 0; i < 100; i++)
    				{
    					for (int j = 0; j < 100; j++)
    					{
    						 ?????????????????
    					}
    				}
    				t->UnlockRect(0);
    

    der code war nur zum testen.. ich hab statt den ? auch schon was stehen gehabt, aber das hab ich nicht ganz verstanden ^^

    frage: wie kann ich jetzt die r,g,b,a werte der textur an einem bestimmten pixel setzen??

    €: ich weiß, dass ich die textur einfach aus einem file laden könnte, aber das mach ich absichtlich nicht, weil ich bei manchen texturen kein file habe...



  • Das würde mich auch interessieren.. habe jetzt auch ein wenig gesucht und mit IDirect3DDevice9::UpdateSurface kann man wohl sowas anstellen. Muss mich aber mal näher damit auseinandersetzen.. mir ist noch nicht ganz klar, was es mit den "surfaces" auf sich hat... 😕
    Was hast Du denn schon dazu? Und hast Du es selbst gemacht oder irgendwo kopiert? Deine Aussage macht diesen Eindruck..

    spong3bob schrieb:

    ich hab statt den ? auch schon was stehen gehabt, aber das hab ich nicht ganz verstanden ^^

    ..vielleicht können wir uns ja gegenseitig helfen?!



  • D3DXCreateTexture(renderer->Device,f.getWidth(),f.getHeight(),1,D3DUSAGE_DYNAMIC,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&renderer->Textures[Filename]);
    D3DLOCKED_RECT pLockedRect;
    renderer->Textures[Filename]->LockRect(0, &pLockedRect, NULL, 0);
    unsigned char *data = (unsigned char*)pLockedRect.pBits;
    for(uint z=0; z<f.getHeight(); z++)
    {
    	for(uint s=0; s<f.getWidth(); s++)
    	{
    		PIXEL p = f.getPixel(z,s);
    		*data++=p.b;
    		*data++=p.g;
    		*data++=p.r;
    		*data++=p.a;
    	}
    }
    renderer->Textures[Filename]->UnlockRect(0);
    

    so funktionierts...
    f is bei mir eine klasse, die ein tga ausliest und in pixel sind rgba werte gespeichert...



  • Beachte "Pitch" von D3DLOCKED_RECT.


Anmelden zum Antworten