Volume Texture Problem
-
Hallo!
So wie ich Volume Textures verstanden habe, wären sie ne super Sache. Mehrere Texturen bilden eine 3dTexture und je nach dem ich bei dem Vertex w wähle wird die entsprechende Textur ausgewählt...
Soweit so gut, aber bei mir klappt das nicht so ganz. Ich lade jetzt mal 2 Texturen und wähle bei nem 4eck die w Werte aus aber ich bekomme immer komische Resultate. Zb wenn ich bei einer Seite bei den 2 Vertices w auf 0 stelle und auf der gegenüberliegenden Seite w auf 1 so müsste doch auf der einen Seite die eine Textur und auf der anderen Seite die andere Textur sein und die sollten dann in der Mitte nen schönen Übergang bildenAber es kommen immer komische Resultate heraus zb wenn ich alle w auf 0 stelle erscheint nicht etwa nur die eine Textur sondern beide gleichmäßig verschwommen.

Habe ich Volume Texturen falsch verstanden?
Hier der Sourcecode:
Laden der Volume Textur
HRESULT hr = m_pDevice->CreateVolumeTexture(bmpWidth, bmpHeight, quant, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &volTexture, NULL ); if( FAILED(hr) ) { assert(false); } // Fill the volume texture D3DLOCKED_BOX LockedBox; hr = volTexture->LockBox( 0, &LockedBox, 0, 0 ); if( FAILED(hr) ) assert(false); for(UINT w=0; w<quant; w++) { BYTE* pSliceStart = (BYTE*)LockedBox.pBits; pBmp = m_pBitmaps[w]; for( UINT v=0; v<bmpWidth; v++ ) { for( UINT u=0; u<bmpHeight; u++ ) { Color col; pBmp->getPixel((int)v,(int)u,col); DWORD r = (DWORD)col.m_Red; DWORD g = (DWORD)col.m_Green; DWORD b = (DWORD)col.m_Blue; ((DWORD*)LockedBox.pBits)[u] = 0xff000000 + (r<<16) + (g<<8) + (b); } LockedBox.pBits = (BYTE*)LockedBox.pBits + LockedBox.RowPitch; } LockedBox.pBits = pSliceStart + LockedBox.SlicePitch; } volTexture->UnlockBox( 0 );Erstellen der Vertices:
vertices[0].x = 0.0f; vertices[0].y = height; vertices[0].z = 0.0f; vertices[0].u1 = 1.0f; vertices[0].v1 = 1.0f; vertices[0].w1 = 0.0; vertices[1].x = 0.0f; vertices[1].y = height; vertices[1].z = size; vertices[1].u1 = 1.0f;; vertices[1].v1 = 0.0f; vertices[1].w1 = 1.0f; vertices[2].x = size; vertices[2].y = height; vertices[2].z = size; vertices[2].u1 = 0.0f; vertices[2].v1 = 0.0f; vertices[2].w1 = 1.0f; vertices[3].x = size; vertices[3].y = height; vertices[3].z = 0.0f; vertices[3].u1 = 0.0f; vertices[3].v1 = 1.0f;; vertices[3].w1 = 0.5f;Würde mich sehr über ne Hilfe freuen!!

-
Sorry, hat sich erledigt. Denkfehler meinerseits.