[ros-diffs] [khornicek] 43987: - opengl support for arwinss

khornicek at svn.reactos.org khornicek at svn.reactos.org
Fri Nov 6 15:52:28 CET 2009


Author: khornicek
Date: Fri Nov  6 15:52:27 2009
New Revision: 43987

URL: http://svn.reactos.org/svn/reactos?rev=43987&view=rev
Log:
- opengl support for arwinss

Added:
    branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c   (with props)
Modified:
    branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c
    branches/arwinss/reactos/dll/win32/winent.drv/winent.rbuild

Modified: branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c?rev=43987&r1=43986&r2=43987&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c [iso-8859-1] Fri Nov  6 15:52:27 2009
@@ -77,13 +77,6 @@
 
     return RosGdiBitBlt(physDevDst->hKernelDC, xDst, yDst, width, height,
         physDevSrc->hKernelDC, xSrc, ySrc, rop);
-}
-
-int CDECL RosDrv_ChoosePixelFormat(NTDRV_PDEVICE *physDev,
-                                   const PIXELFORMATDESCRIPTOR *ppfd)
-{
-    UNIMPLEMENTED;
-    return 0;
 }
 
 BOOL CDECL RosDrv_Chord( NTDRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom,
@@ -205,15 +198,6 @@
 
     /* Return result */
     return res;
-}
-
-int CDECL RosDrv_DescribePixelFormat(NTDRV_PDEVICE *physDev,
-			       int iPixelFormat,
-			       UINT nBytes,
-			       PIXELFORMATDESCRIPTOR *ppfd)
-{
-    UNIMPLEMENTED;
-    return 0;
 }
 
 BOOL CDECL RosDrv_Ellipse( NTDRV_PDEVICE *physDev, INT left, INT top, INT right, INT bottom )
@@ -352,12 +336,6 @@
     return RosGdiGetPixel(physDev->hKernelDC, ptPixel.x, ptPixel.y);
 }
 
-int CDECL RosDrv_GetPixelFormat(NTDRV_PDEVICE *physDev)
-{
-    UNIMPLEMENTED;
-    return 0;
-}
-
 UINT CDECL RosDrv_GetSystemPaletteEntries( NTDRV_PDEVICE *physDev, UINT start, UINT count,
                                            LPPALETTEENTRY entries )
 {
@@ -726,14 +704,6 @@
     LPtoDP(physDev->hUserDC, &ptPixel, 1);
 
     return RosGdiSetPixel(physDev->hKernelDC, ptPixel.x, ptPixel.y, color);
-}
-
-BOOL CDECL RosDrv_SetPixelFormat(NTDRV_PDEVICE *physDev,
-                                   int iPixelFormat,
-                                   const PIXELFORMATDESCRIPTOR *ppfd)
-{
-    UNIMPLEMENTED;
-    return FALSE;
 }
 
 COLORREF CDECL RosDrv_SetTextColor( NTDRV_PDEVICE *physDev, COLORREF color )
@@ -782,12 +752,6 @@
         physDevSrc->hKernelDC, xSrc, ySrc, widthSrc, heightSrc, rop);
 }
 
-BOOL CDECL RosDrv_SwapBuffers(NTDRV_PDEVICE *physDev)
-{
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
 BOOL CDECL RosDrv_UnrealizePalette( HPALETTE hpal )
 {
     UNIMPLEMENTED;

Added: branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c?rev=43987&view=auto
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c (added)
+++ branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c [iso-8859-1] Fri Nov  6 15:52:27 2009
@@ -1,0 +1,110 @@
+/*
+ * PROJECT:         ReactOS
+ * LICENSE:         LGPL
+ * FILE:            dll/win32/winent.drv/ogldrv.c
+ * PURPOSE:         OpenGL driver for ReactOS/Windows
+ * PROGRAMMERS:     Kamil Hornicek
+ */
+
+/* INCLUDES ***************************************************************/
+
+#include "windows.h"
+#include "wingdi.h"
+#include "ntrosgdi.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(rosogldrv);
+
+typedef INT  (WINAPI *CHOOSEPIXELFMT) (HDC, CONST PIXELFORMATDESCRIPTOR *);
+typedef INT  (WINAPI *DESCRIBEPIXELFMT) (HDC, INT, UINT, PIXELFORMATDESCRIPTOR *);
+typedef INT  (WINAPI *GETPIXELFMT) (HDC);
+typedef BOOL (WINAPI *SETPIXELFMT) (HDC, INT, CONST PIXELFORMATDESCRIPTOR *);
+typedef BOOL (WINAPI *SWAPBUFFERS) (HDC);
+
+static CHOOSEPIXELFMT   glChoosePixelFormat   = NULL;
+static DESCRIBEPIXELFMT glDescribePixelFormat = NULL;
+static GETPIXELFMT      glGetPixelFormat      = NULL;
+static SETPIXELFMT      glSetPixelFormat      = NULL;
+static SWAPBUFFERS      glSwapBuffers         = NULL;
+
+/* FUNCTIONS **************************************************************/
+
+BOOL InitOGL(VOID)
+{
+    HMODULE hOGL;
+
+    hOGL = LoadLibraryW(L"OPENGL32.DLL");
+
+    if (!hOGL)
+        return FALSE;
+
+    glChoosePixelFormat = GetProcAddress(hOGL, "wglChoosePixelFormat");
+    glDescribePixelFormat = GetProcAddress(hOGL, "wglDescribePixelFormat");
+    glGetPixelFormat = GetProcAddress(hOGL, "wglGetPixelFormat");
+    glSetPixelFormat = GetProcAddress(hOGL, "wglSetPixelFormat");
+    glSwapBuffers = GetProcAddress(hOGL, "wglSwapBuffers");
+
+    if (!glChoosePixelFormat || !glDescribePixelFormat || !glGetPixelFormat ||
+        !glSetPixelFormat || !glSwapBuffers)
+    {
+        FreeLibrary(hOGL);
+        ERR("Failed to load required wgl* functions from opengl32\n");
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+INT CDECL RosDrv_ChoosePixelFormat(NTDRV_PDEVICE *physDev,
+                                   CONST PIXELFORMATDESCRIPTOR *ppfd)
+{
+    if (!glChoosePixelFormat)
+        if (!InitOGL())
+            return 0;
+
+    return glChoosePixelFormat(physDev->hUserDC, ppfd);
+}
+
+INT CDECL RosDrv_GetPixelFormat(NTDRV_PDEVICE *physDev)
+{
+    if (!glGetPixelFormat)
+        if (!InitOGL())
+            return 0;
+
+    return glGetPixelFormat(physDev->hUserDC);
+}
+
+INT CDECL RosDrv_DescribePixelFormat(NTDRV_PDEVICE *physDev,
+                                     INT iPixelFormat,
+                                     UINT nBytes,
+                                     PIXELFORMATDESCRIPTOR *ppfd)
+{
+    if (!glDescribePixelFormat)
+        if (!InitOGL())
+            return 0;
+
+    return glDescribePixelFormat(physDev->hUserDC, iPixelFormat, nBytes, ppfd);
+}
+
+BOOL CDECL RosDrv_SetPixelFormat(NTDRV_PDEVICE *physDev,
+                                 INT iPixelFormat,
+                                 CONST PIXELFORMATDESCRIPTOR *ppfd)
+{
+    if (!glSetPixelFormat)
+        if (!InitOGL())
+            return 0;
+
+    return glSetPixelFormat(physDev->hUserDC, iPixelFormat, ppfd);
+}
+
+
+BOOL CDECL RosDrv_SwapBuffers(NTDRV_PDEVICE *physDev)
+{
+    if (!glSwapBuffers)
+        if (!InitOGL())
+            return 0;
+
+    return glSwapBuffers(physDev->hUserDC);
+}
+
+/* EOF */

Propchange: branches/arwinss/reactos/dll/win32/winent.drv/ogldrv.c
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/arwinss/reactos/dll/win32/winent.drv/winent.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winent.drv/winent.rbuild?rev=43987&r1=43986&r2=43987&view=diff
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/winent.rbuild [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/winent.rbuild [iso-8859-1] Fri Nov  6 15:52:27 2009
@@ -12,6 +12,7 @@
 	<file>userdrv.c</file>
 	<file>mouse.c</file>
 	<file>wnd.c</file>
+	<file>ogldrv.c</file>
 
 	<file>winent.rc</file>
 




More information about the Ros-diffs mailing list