Henri Verbeet : wined3d: Set the correct pow2Matrix for cube textures when NPOT textures are supported .

Alexandre Julliard julliard at winehq.org
Thu Oct 9 07:42:36 CDT 2008


Module: wine
Branch: master
Commit: 3b2ac77e128e0d62e41ed67829dad2e572829d6d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3b2ac77e128e0d62e41ed67829dad2e572829d6d

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Oct  8 16:44:24 2008 +0200

wined3d: Set the correct pow2Matrix for cube textures when NPOT textures are supported.

---

 dlls/wined3d/device.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 445fbaa..b90ac1d 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;




More information about the wine-cvs mailing list