Ken Thomases : winemac: Implement WGL_NV_render_texture_rectangle.

Alexandre Julliard julliard at winehq.org
Wed Mar 6 13:11:53 CST 2013


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Wed Mar  6 04:59:30 2013 -0600

winemac: Implement WGL_NV_render_texture_rectangle.

---

 dlls/winemac.drv/opengl.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c
index 3b60a5c..c62db1a 100644
--- a/dlls/winemac.drv/opengl.c
+++ b/dlls/winemac.drv/opengl.c
@@ -1705,10 +1705,13 @@ static BOOL macdrv_wglChoosePixelFormatARB(HDC hdc, const int *piAttribIList,
             case WGL_DRAW_TO_PBUFFER_ARB:
             case WGL_BIND_TO_TEXTURE_RGB_ARB:
             case WGL_BIND_TO_TEXTURE_RGBA_ARB:
+            case WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV:
+            case WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV:
                 if (valid.pbuffer && (!pf.pbuffer != !value)) goto cant_match;
                 pf.pbuffer = (value != 0);
                 valid.pbuffer = 1;
-                if (attr == WGL_BIND_TO_TEXTURE_RGBA_ARB && !alpha_bits)
+                if ((attr == WGL_BIND_TO_TEXTURE_RGBA_ARB || attr == WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV) &&
+                    !alpha_bits)
                     alpha_bits = 1;
                 break;
 
@@ -1859,6 +1862,10 @@ static struct wgl_pbuffer *macdrv_wglCreatePbufferARB(HDC hdc, int iPixelFormat,
                         TRACE("WGL_TEXTURE_TARGET_ARB: WGL_TEXTURE_2D_ARB\n");
                         target = GL_TEXTURE_2D;
                         break;
+                    case WGL_TEXTURE_RECTANGLE_NV:
+                        TRACE("WGL_TEXTURE_TARGET_ARB: WGL_TEXTURE_RECTANGLE_NV\n");
+                        target = GL_TEXTURE_RECTANGLE;
+                        break;
                     default:
                         WARN("unknown WGL_TEXTURE_TARGET_ARB value 0x%x\n", value);
                         SetLastError(ERROR_INVALID_DATA);
@@ -2244,10 +2251,12 @@ static BOOL macdrv_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int i
 
             case WGL_DRAW_TO_PBUFFER_ARB:
             case WGL_BIND_TO_TEXTURE_RGB_ARB:
+            case WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV:
                 piValues[i] = pf->pbuffer ? GL_TRUE : GL_FALSE;
                 break;
 
             case WGL_BIND_TO_TEXTURE_RGBA_ARB:
+            case WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV:
                 piValues[i] = (pf->pbuffer && color_modes[pf->color_mode].alpha_bits) ? GL_TRUE : GL_FALSE;
                 break;
 
@@ -2490,9 +2499,11 @@ static BOOL macdrv_wglQueryPbufferARB(struct wgl_pbuffer *pbuffer, int iAttribut
                     *piValue = WGL_TEXTURE_CUBE_MAP_ARB;
                     break;
                 case GL_TEXTURE_2D:
+                    *piValue = WGL_TEXTURE_2D_ARB;
+                    break;
                 case GL_TEXTURE_RECTANGLE:
                 default:
-                    *piValue = WGL_TEXTURE_2D_ARB;
+                    *piValue = WGL_TEXTURE_RECTANGLE_NV;
                     break;
             }
             break;
@@ -2726,6 +2737,10 @@ static void load_extensions(void)
         opengl_funcs.ext.p_wglBindTexImageARB       = macdrv_wglBindTexImageARB;
         opengl_funcs.ext.p_wglReleaseTexImageARB    = macdrv_wglReleaseTexImageARB;
         opengl_funcs.ext.p_wglSetPbufferAttribARB   = macdrv_wglSetPbufferAttribARB;
+
+        if (gluCheckExtension((GLubyte*)"GL_ARB_texture_rectangle", (GLubyte*)gl_info.glExtensions) ||
+            gluCheckExtension((GLubyte*)"GL_EXT_texture_rectangle", (GLubyte*)gl_info.glExtensions))
+            register_extension("WGL_NV_render_texture_rectangle");
     }
 
     /* TODO:




More information about the wine-cvs mailing list