OpenRM - RMAUX Library (rmcreatw.c)

## Index of OpenRM - RMAUX Library

     HWND rmauxCreateW32Window (const RMpipe *useMe,
    		            HWND parent,
    			    int xpos,
    			    int ypos,
    			    int width,
    			    int height,
    			    char *wtitle,
    			    HINSTANCE hInstance,
    			    void *event_loop_fptr)

     const RMpipe *useMe - a handle to an initialized RMpipe object.

     HWND parent - the Win32 window handle to the parent window. NULL is
        OK.

     int xpos, ypos - integer values specifying the (x,y) pixel coordinate
        of the new window.

     int width, height - integer values specifying the pixel width and
        height of the new window.

     char *wtitle - a character string used as the title of the
        window. This string will appear in the title bar painted around
        your window by Wxx.

     HINSTANCE hInstance - an HINSTANCE handle. this handle is provided to
        your WinMain routine by Windows.

     void *event_loop_fptr - A function pointer, cast to a (void *), of
        your WndProc (event loop).

Creates a window suitable for rendering by OpenRM on the Win32 platform. Returns a valid window handle upon success, or NULL (zero) upon failure. Strictly speaking, the window is not yet ready for drawing upon conclusion of this routine due to how Win32 works.

All Win32 developers must use an "init function" that is called once after the WM_CREATE message has been posted and processed. The Win32 version of rmauxEventLoop() should be used as a guide.

librmaux library source file: rmcreatw.c

     HWND rmauxCreateOffscreenDrawable (const RMpipe *pipe,
    		                    int width,
    			            int height,
    			            int depth,
    				    HINSTANCE hCurrentInst,
    				    void *eventLoopFuncPtr)

     const RMpipe *pipe - a handle to an RMpipe object (input).

     int width, height - integer values that specify the pixel dimensions
        of the new offscreen drawable.

     int depth - integer value that specifies the pixel depth of the new
        drawable. This value is used for both color planes and depth buffer.

     HINSTANCE hInstance - an HINSTANCE handle. this handle is provided to
        your WinMain routine by Windows.

     void *event_loop_fptr - A function pointer, cast to a (void *), of
        your WndProc (event loop).

Use this routine to create an offscreen drawable object in OpenRM. You can use this drawable just like a normal on-screen window, but the window is never mapped. On most systems, it is permissible to have the offscreen drawable be much larger than the actual dimensions of the physical display device.

Upon success, this routine returns a non-zero drawable handle.

Win32 notes (v1.4.0-alpha-2): it may be permissible to pass in a value of NULL for the eventLoopFuncPtr - we haven't tried that. Refer to the OpenRM demonstration program offscreen.c - we pass in rmauxWndProc as the "WndProc." However, because the window is never mapped, the WndProc is never invoked.

librmaux library source file: rmcreatw.c

     Window rmauxCreateXWindow (RMpipe *pipe,
    		            Window parent,
    			    int xPosition,
    			    int yPosition,
    			    int width,
    			    int height,
    			    const char *winTitle,
    			    const char *iconTitle,
    			    RMenum managed)

     RMpipe *pipe - a handle to an RMpipe (input, possibly modified).

     Window parent - an X11 Window handle to the parent window (NULL is OK).

     int xPosition, yPosition - integer values specifying the pixel
        location of the upper left corner of the new window.

     int width, height - integer values specifying the pixel width and
        height of the new window.

     const char *winTitle, *iconTitle - character strings containing the
        window title and icon title, respectively. The ultimate use of
        these strings is implementation and window-system specific.

     RMenum managed - an RMenum value indicating whether or not this
        window will be managed by the window manager. When not managed,
        the window will be drawn with no decorations, title bars, etc. and
        all window events will bypass the window manager and go directly
        to the window.  RM_TRUE or RM_FALSE. Unmanaged windows are useful
        in VR applications.

This routine creates an X11 window suitable for use by OpenRM for drawing, and returns a handle to the caller. Prior to calling this routine, the RMpipe must be initialized (see rmInitPipe).

Returns zero upon failure, or a Window handle upon success.

During processing, this routine will check the input RMpipe for the presence of an OpenGL context and an XVisual. If both are not present, a suitable OpenGL context will be created, along with an appropriate XVisual structure. The XVisual structure is needed to ensure the new window that is created will be suitable for OpenGL rendering use.

See also XCreateWindow (X11R6).

librmaux library source file: rmcreatw.c

     GLXPixmap rmauxCreateOffscreenDrawable (const RMpipe *pipe,
    			                 int width,
    			                 int height,
    			                 int depth)

     const RMpipe *pipe - a handle to an RMpipe object (input).
     int width, height - integer values that specify the pixel dimensions
        of the new offscreen drawable.
     int depth - integer value that specifies the pixel depth of the new
        drawable. This value is used for both color planes and depth buffer.

Use this routine to create an offscreen drawable object in OpenRM. You can use this drawable just like a normal on-screen window, but the window is never mapped. On most systems, it is permissible to have the offscreen drawable be much larger than the actual dimensions of the physical display device.

Upon success, this routine returns a non-zero drawable handle.

librmaux library source file: rmcreatw.c