From 3b2ac77e128e0d62e41ed67829dad2e572829d6d Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 8 Oct 2008 16:44:24 +0200 Subject: [PATCH] wined3d: Set the correct pow2Matrix for cube textures when NPOT textures are supported. --- dlls/wined3d/device.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 445fbaa13b6..b90ac1d7b2a 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1077,19 +1077,25 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface TRACE("(%p) Create Cube Texture\n", This); - /** Non-power2 support **/ - /* Find the nearest pow2 match */ pow2EdgeLength = 1; while (pow2EdgeLength < EdgeLength) pow2EdgeLength <<= 1; object->edgeLength = EdgeLength; - /* TODO: support for native non-power 2 */ - /* Precalculated scaling for 'faked' non power of two texture coords */ - object->baseTexture.pow2Matrix[ 0] = ((float)EdgeLength) / ((float)pow2EdgeLength); - object->baseTexture.pow2Matrix[ 5] = ((float)EdgeLength) / ((float)pow2EdgeLength); - object->baseTexture.pow2Matrix[10] = ((float)EdgeLength) / ((float)pow2EdgeLength); - object->baseTexture.pow2Matrix[15] = 1.0; + + if (GL_SUPPORT(ARB_TEXTURE_NON_POWER_OF_TWO)) { + /* Precalculated scaling for 'faked' non power of two texture coords */ + object->baseTexture.pow2Matrix[ 0] = 1.0; + object->baseTexture.pow2Matrix[ 5] = 1.0; + object->baseTexture.pow2Matrix[10] = 1.0; + object->baseTexture.pow2Matrix[15] = 1.0; + } else { + /* Precalculated scaling for 'faked' non power of two texture coords */ + object->baseTexture.pow2Matrix[ 0] = ((float)EdgeLength) / ((float)pow2EdgeLength); + object->baseTexture.pow2Matrix[ 5] = ((float)EdgeLength) / ((float)pow2EdgeLength); + object->baseTexture.pow2Matrix[10] = ((float)EdgeLength) / ((float)pow2EdgeLength); + object->baseTexture.pow2Matrix[15] = 1.0; + } if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) { object->baseTexture.minMipLookup = &minMipLookup; -- 2.11.4.GIT